Snap for 8564071 from d7e59a5af28625feb2b9fb90317635444f7f7bbb to mainline-cellbroadcast-release

Change-Id: I4ea7636afe6371f2681f57108da718841263c408
diff --git a/.clang-format b/.clang-format
index 1b422df..d09d739 100644
--- a/.clang-format
+++ b/.clang-format
@@ -2,17 +2,24 @@
 ---
 BasedOnStyle: GNU
 Standard: c++11
-AlignConsecutiveDeclarations: true
+AlignConsecutiveDeclarations: false
+AllowShortBlocksOnASingleLine: Always
+AllowShortEnumsOnASingleLine: true
+AllowShortFunctionsOnASingleLine: All
+AllowShortLambdasOnASingleLine: All
 AlwaysBreakAfterReturnType: All
 BreakConstructorInitializers: BeforeColon
 ConstructorInitializerAllOnOneLineOrOnePerLine: true
 ConstructorInitializerIndentWidth: 2
+Cpp11BracedListStyle: true
 IndentWidth: 2
 AlignAfterOpenBracket: Align
+BinPackArguments: false
 BinPackParameters: false
 BreakStringLiterals: false
 PointerAlignment: Left
 SortUsingDeclarations: false
+SpaceAfterCStyleCast: true
 SpaceBeforeParens: ControlStatements
 TabWidth: 8
 UseTab: Always
diff --git a/.mailmap b/.mailmap
new file mode 100644
index 0000000..b07ed48
--- /dev/null
+++ b/.mailmap
@@ -0,0 +1,7 @@
+# A few commits have been pushed with 'Author: NAME via Libabigail <libabigail@sourceware.org>'.
+# Map these to the respective 'Signed-off-by's.
+Ben Woodard <woodard@redhat.com>	Ben Woodard via Libabigail <libabigail@sourceware.org>
+Guillermo E. Martinez <guillermo.e.martinez@oracle.com>	Guillermo E. Martinez via Libabigail <libabigail@sourceware.org>
+Jose E. Marchesi <jose.marchesi@oracle.com>	Jose E. Marchesi via Libabigail <libabigail@sourceware.org>
+Matthias Maennich <maennich@google.com>	Matthias Maennich via libabigail <libabigail@sourceware.org>
+Xiao Jia <xiaoj@google.com>	Xiao Jia via libabigail <libabigail@sourceware.org>
diff --git a/ABIXML-FORMAT-VERSIONS b/ABIXML-FORMAT-VERSIONS
new file mode 100644
index 0000000..811771a
--- /dev/null
+++ b/ABIXML-FORMAT-VERSIONS
@@ -0,0 +1,67 @@
+2.1 version
+===========
+
+This occurred in libabigail 2.1.  The IR doesn't contain no-op
+qualified types anymore.  These were the ancient way to represent
+qualified type that were edited by libabigail to avoid spurious
+diagnostics. E.g, const references or const void type.  In those
+cases, we were replacing these by qualified types that were no-ops.
+Those no-ops qualified types further needed to be stripped off in the
+diff IR to avoid emitting spurious changes.  It turned out stripping
+out those no-op qualified types was causing some difficulties in the
+algorithms that propagate type diff node categorization.
+
+For instance, variable diff type node would have the categorization of
+its diff->type_diff() be different from what we could see from the
+change observed between its diff->first_subject()->get_type() and
+diff->second_subject()->get_type().  This is because diff->type_diff()
+strips the no-op qualified types to create a new diff IR node, whereas
+looking at the difference between diff->first_subject->get_type() and
+diff->second_subject()->get_type() gives a different perspective.
+
+So looking at the "changes" carried by 'diff' could yield a result
+suggesting that there was a change to be diagnosed, carried by the
+difference between diff->first_subject()->get_type() and
+diff->second_subject()->get_type() -- a difference between two no-ops
+qualified types -- whereas actually looking at diff->type_diff() (that
+should be equivalent) yields a different information because it's
+stripped off of the no-op qualified type.
+
+Just removing the no-op qualified types removed all those issues
+altogether.  So in concrete terms, when we see a const reference, it's
+replaced by a reference (because a reference is always const) and
+when we see a const void, it's replaced by void.  As simple as that.
+
+But then the emitted ABIXML won't carry any no-op qualified type
+anymore. Older versions of ABIXML might still carry those, and so
+abidiff-ing those against their original binary might yield some
+spurious diagnostics.  Hence the minor version bump.
+
+relevant commit:
+----------------
+commit 8a4f72005bc96fecf63414784cf94857eddbd124
+Author: Dodji Seketeli <dodji@redhat.com>
+Date:   Thu Nov 4 10:59:32 2021 +0100
+
+    Bug 28450 - Fix cloned member function handling in DWARF
+2.0 version
+===========
+
+This occured in libabigail 2.0.  The interpretation of
+DW_AT_bit_offset (DWARF 5) changed so the value of the
+'layout-offset-in-bits' property of the 'data-member' element might
+now have changed in an incompatible way.
+
+relevant commit:
+----------------
+commit 23046152e0843bc2f141e37dcce047305c3f4379
+Author: Dodji Seketeli <dodji@redhat.com>
+Date:   Thu Oct 22 16:04:08 2020 +0200
+
+    Bump ABIXML format version to 2.0
+
+
+1.0 version
+===========
+
+This was the initial version of abixml.
diff --git a/Android.bp b/Android.bp
index d743ebb..09e7d16 100644
--- a/Android.bp
+++ b/Android.bp
@@ -16,28 +16,7 @@
     default_applicable_licenses: ["external_libabigail_license"],
 }
 
-// Added automatically by a large-scale-change that took the approach of
-// 'apply every license found to every target'. While this makes sure we respect
-// every license restriction, it may not be entirely correct.
-//
-// e.g. GPL in an MIT project might only apply to the contrib/ directory.
-//
-// Please consider splitting the single license below into multiple licenses,
-// taking care not to lose any license_kind information, and overriding the
-// default license using the 'licenses: [...]' property on targets as needed.
-//
-// For unused files, consider creating a 'fileGroup' with "//visibility:private"
-// to attach the license to, and including a comment whether the files may be
-// used in the current project.
-//
-// large-scale-change included anything that looked like it might be a license
-// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
-//
-// Please consider removing redundant or irrelevant files from 'license_text:'.
-//
-// large-scale-change filtered out the below license kinds as false-positives:
-//   SPDX-license-identifier-LGPL-3.0
-// See: http://go/android-license-faq
+// http://go/android-license-faq
 license {
     name: "external_libabigail_license",
     visibility: [":__subpackages__"],
@@ -45,11 +24,9 @@
         "SPDX-license-identifier-Apache-2.0",
         "SPDX-license-identifier-BSL-1.0",
         "SPDX-license-identifier-MIT",
-        "legacy_unencumbered",
     ],
     license_text: [
-        "LICENSE.txt",
-        "license-change-2020.txt",
+        "LICENSE",
     ],
 }
 
@@ -57,13 +34,13 @@
     name: "libabigail_defaults",
     cflags: [
         "-DABIGAIL_ROOT_SYSTEM_LIBDIR=\"lib\"",
+        "-DUSE_ANDROID_BUILD_NUMBER",
         "-fexceptions",
         "-Wno-implicit-fallthrough",
     ],
 
     local_include_dirs: [
         "src",
-        "include",
     ],
 
     static_libs: [
@@ -72,19 +49,21 @@
         "libicuuc",
         "libicuuc_stubdata",
         "libxml2",
+        "libbuildversion",
         "libz",
     ],
 
-    generated_headers: ["android_build_version"],
-
     visibility: [
-        "//visibility:private",
+        "//external/stg",
     ],
     compile_multilib: "64",
     target: {
         darwin: {
             enabled: false,
         },
+        musl: {
+            static_libs: ["libfts"],
+        },
     },
 }
 
@@ -95,8 +74,19 @@
         "src/*.cc",
     ],
     exclude_srcs: [
+        "src/abg-ctf-reader.cc",
         "src/abg-viz-*",
     ],
+    export_include_dirs: ["include"],
+}
+
+cc_library_headers {
+    name: "libabigail_src_headers",
+    host_supported: true,
+    visibility: ["//external/stg"],
+    export_include_dirs: [
+        "src",
+    ],
 }
 
 cc_binary_host {
@@ -121,14 +111,13 @@
     ],
 }
 
-genrule {
-    name: "android_build_version",
-    cmd: "$(location) $(location .) $(out)",
-    out: [
-        "android_build_version.h",
+cc_binary_host {
+    name: "abitidy",
+    defaults: ["libabigail_defaults"],
+    srcs: [
+        "tools/abitidy.cc",
     ],
-    srcs : ["."],
-    tool_files: [
-        "android_build_version.sh"
-    ]
+    static_libs: [
+        "libabigail",
+    ],
 }
diff --git a/CONTRIBUTING b/CONTRIBUTING
index 7e3e856..5ab7bcc 100644
--- a/CONTRIBUTING
+++ b/CONTRIBUTING
@@ -63,25 +63,28 @@
 tarball of the project that you can download from the internet) then
 you can do:
 
-  make distcheck
+  make distcheck-fast
 
 This actually builds the tarball, then untars it, configure/compile
 the untarred source code and launches the regression checks from
 there.
 
+Here, "make distcheck-fast" is a variant of the standard "make distcheck".
+It compresses with "--fast" instead of default "--best", and is
+significantly faster, given the size of the distribution.  You very likely
+want to use that one for local regression testing.  (However, don't use
+"make distcheck-fast" to create artifacts for distribution.)
+
 You can also launch this in parallel by doing:
 
-  make -jN -lN distcheck
+  make -jN -lN distcheck-fast
 
 with N being the number of processor core you have on your system.
 
-Please make sure you always launch "make distcheck" before sending a
+Please make sure you always launch "make distcheck-fast" before sending a
 patch, so that you are sure that we can always build a tarball after
 your patch is applied to the source tree.
 
-A variant of distcheck is "make distcheck-fast".  It's like "make
-distcheck" but it's faster.  You can just use that one.
-
 A complementary regression checking target is "check-self-compare".
 You invoke it by doing "make check-self-compare".  That target
 analyzes the ABI of the libabigail.so shared object, serializes it
@@ -89,68 +92,13 @@
 representation gathered from the libabigail.so binary against the one
 gathered from the ABIXML format.  The two should be equal if
 everything goes right.  This is an important regression test.  The
-problem is that it can takes twice as much time as make distcheck.  So
-we've put it into its own separate target.
+problem is that it can take a considerable amount of time.
+So we've put it into its own separate target.
 
 So, to be complete the regression checking command to run against your
-patch should be: "make check-self-compare distcheck -j16", if you have
+patch should be: "make check-self-compare distcheck-fast -j16", if you have
 a machine with a 16 threads processors, for instance.
 
-Coding language and style
-==========================
-
-The coding style is self evident when reading the source code.  So
-please, stick to and mimic what is already in there for the sake of
-consistency at very least.  Just for history, it's derived from the
-style of the C++ standard library from the GNU project.
-
-As of libabigail 2.0, the language we use is C++ 11.  The level
-supported is the one supported by the GCC 4.8.x series of compilers.
-This should be old and well tested enough to be supported by your
-current favorite compiler.
-
-Initially, the code base of the project was written in C++03, with the
-TR1 extensions.  That heritage is well visible in the code base as it
-is today.
-
-Please do not rush and send gazillions of patches that just re-write
-tons of code into your favorite C++ 11 flavour du jour.  We will
-likely reject those patches.  We want to keep the history of the code
-base in such a way that tools like "git blame <sourcefile> are still
-useful.
-
-So we'll accept patches changing parts of the code base to more recent
-C++ 11 constructs only if you happen to add functionality or fix
-things in that area.  If it makes "cultural common" sense to adopt
-those constructs.  What I mean by "cultural" is that must make sense
-in relative to the culture of the project.  And yes, that is
-subjective.  Sorry.
-
-As a generic rule, we tend to favor the lowest possible level of
-abstraction that makes sense without requiring future maintainers of
-the project to have a PhD in design patterns.  We are not impressed by
-design patterns.  We use them where they make clear sense, but we
-don't idolize them.  Put it another way, we will always favor the one
-who *READS* and debug the code over the one who writes it.  To put
-things in a hypothetical perspective, we'll rather accept a repetitive
-code that stays simple to read and debug over a highly abstract one
-using meta programming to save a few lines of repetitive code located
-in a very small number of places.
-
-Really, in this project, we care about low level binary analysis
-stuff.  Issues in that area can be hard to reproduce and quite
-challenging to debug.  So having tons of abstraction layers in the
-code base have proven to be a maintenance burden over the years, from
-our experience in working on similar projects.  So please help us
-avoid those mistakes that we make just for the pleasure of writing
-what can look as "pleasant code" at a first naive sight.
-
-That being said, we also love cleanly designed APIs that are fairly
-re-usable and well documented.  And we also praise abstraction and
-modularisation that we recognize as being the most basic tools of any
-engineer.  So we like to think about ourselves as well rounded people
-who care about maintaining things for a long time to come :-)
-
 Launching regression tests in Valgrind
 --------------------------------------
 
@@ -226,6 +174,81 @@
 tests/data/Makefile.am file, in the EXTRA_DIST variable.  Look at how
 things are organized in that file, and please do things similarly.
 
+fedabipkgdiff testing
+---------------------
+
+This depends on the Python koji and a few support modules.  If these are
+not available, 'configure' disables fedabipkgdiff and its 'make check'
+testing.
+
+Debian and Ubuntu, for example, don't provide packages for the Python
+koji module.  If you'd like to run fedabipkgdiff testing without manually
+doing a proper Koji installation, you may simply download Koji sources
+(<https://pagure.io/koji>, releases, or Git clone) and point to these via
+the Python search path.  For example, tested 2021-12-11:
+
+  wget https://pagure.io/koji/archive/koji-1.27.0/koji-koji-1.27.0.tar.gz
+  tar -xzf koji-koji-1.27.0.tar.gz
+  export PYTHONPATH="$PWD"/koji-koji-1.27.0
+
+A libabigail 'configure' run then enables fedabipkgdiff and its
+'make check' testing.
+
+Coding language and style
+==========================
+
+The coding style is self evident when reading the source code.  So
+please, stick to and mimic what is already in there for the sake of
+consistency at very least.  Just for history, it's derived from the
+style of the C++ standard library from the GNU project.
+
+As of libabigail 2.0, the language we use is C++ 11.  The level
+supported is the one supported by the GCC 4.8.x series of compilers.
+This should be old and well tested enough to be supported by your
+current favorite compiler.
+
+Initially, the code base of the project was written in C++03, with the
+TR1 extensions.  That heritage is well visible in the code base as it
+is today.
+
+Please do not rush and send gazillions of patches that just re-write
+tons of code into your favorite C++ 11 flavour du jour.  We will
+likely reject those patches.  We want to keep the history of the code
+base in such a way that tools like "git blame <sourcefile> are still
+useful.
+
+So we'll accept patches changing parts of the code base to more recent
+C++ 11 constructs only if you happen to add functionality or fix
+things in that area.  If it makes "cultural common" sense to adopt
+those constructs.  What I mean by "cultural" is that must make sense
+in relative to the culture of the project.  And yes, that is
+subjective.  Sorry.
+
+As a generic rule, we tend to favor the lowest possible level of
+abstraction that makes sense without requiring future maintainers of
+the project to have a PhD in design patterns.  We are not impressed by
+design patterns.  We use them where they make clear sense, but we
+don't idolize them.  Put it another way, we will always favor the one
+who *READS* and debug the code over the one who writes it.  To put
+things in a hypothetical perspective, we'll rather accept a repetitive
+code that stays simple to read and debug over a highly abstract one
+using meta programming to save a few lines of repetitive code located
+in a very small number of places.
+
+Really, in this project, we care about low level binary analysis
+stuff.  Issues in that area can be hard to reproduce and quite
+challenging to debug.  So having tons of abstraction layers in the
+code base have proven to be a maintenance burden over the years, from
+our experience in working on similar projects.  So please help us
+avoid those mistakes that we make just for the pleasure of writing
+what can look as "pleasant code" at a first naive sight.
+
+That being said, we also love cleanly designed APIs that are fairly
+re-usable and well documented.  And we also praise abstraction and
+modularisation that we recognize as being the most basic tools of any
+engineer.  So we like to think about ourselves as well rounded people
+who care about maintaining things for a long time to come :-)
+
 Sign your work
 ==============
 
diff --git a/ChangeLog b/ChangeLog
index c810dea..30918b4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,3555 @@
+2021-10-04  Dodji Seketeli <dodji@redhat.com>
+
+	Update NEWS file for 2.0
+	* NEWS: Update for 2.0
+
+2021-09-23  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27086 - Consider all C++ virtual destructors when there are many
+	* src/abg-dwarf-reader.c (build_or_get_fn_decl_if_not_suppressed):
+	Do not try to re-use a virtual destructor of a class, based on its
+	signature.  Several different of these can have the same
+	signature, inside a given class.
+	* tests/data/test-types-stability/PR27086-libstdc++.so.6.0.26:
+	Add new binary test input.
+	* tests/data/Makefile.am: Add the new test input to source
+	distribution.
+	* tests/test-types-stability.cc (elf_paths): Add the test input
+	above to this harness.
+
+2021-09-23  Dodji Seketeli <dodji@redhat.com>
+
+	dwarf-reader: Indent
+	* src/abg-dwarf-reader.cc (finish_member_function_reading): Fix
+	indentation.
+
+2021-09-22  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27970 - Duplicated member functions cause spurious self comparison changes
+	* src/abg-dwarf-reader.cc (fixup_functions_with_no_symbols): When
+	the function decl is finally associated to its (publicly defined)
+	ELF symbol, mark it as being exported.
+	(finish_member_function_reading): Don't risk marking a virtual
+	function as being non-virtual when updating its properties.
+	(build_or_get_fn_decl_if_not_suppressed): Update comment.  If the
+	member function is already present in the class, do not create a
+	new one; rather, reuse the existing one.  It's going to be later
+	updated by finish_member_function_reading.
+	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Adjust.
+	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
+	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
+	Likewise.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
+	Likewise.
+	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
+
+2021-09-21  Dodji Seketeli <dodji@redhat.com>
+
+	abipkgdiff: Do not erase working dirs before we are done using them
+	* tools/abipkgdiff.cc (compare_prepared_userspace_packages):
+	Removing working directories "early" prevents e.g,
+	dwarf_reader::get_soname_of_elf_file from accessing those files.
+	So do not remove them until the very end.
+	* tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt:
+	Adjust.
+
+2021-09-14  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 28316 - Failure to represent typedef named anonymous enums
+	* include/abg-fwd.h (scope_anonymous_or_typedef_named)
+	(is_anonymous_or_typedef_named): Declare new functions.
+	* include/abg-ir.h (decl_base::set_has_anonymous_parent): Remove
+	declaration.
+	(decl_base::{get,set}_naming_typedef): Declare new member
+	functions.
+	* src/abg-ir.cc (update_qualified_name): Define static function.
+	(decl_base::priv::naming_typedef_): Define new data member.
+	(decl_base::priv::has_anonymous_parent_): Remove data member.
+	(decl_base::priv::priv): Adjust constructor.
+	(decl_base::get_has_anonymous_parent): Rather than storing a flag
+	for this, dynamically look at if the scope is anonymous.
+	(decl_base::set_has_anonymous_parent): Remove definition.
+	(decl_base::{get,set}_naming_typedef): Define new member
+	functions.
+	(scope_anonymous_or_typedef_named)
+	(is_anonymous_or_typedef_named): Define new functions.
+	(get_decl_name_for_comparison): Define new sub-routine for the
+	decl_base overload of equals.
+	(equals): In the overload for decl_base, use the new
+	get_decl_name_for_comparison.  It helps to ensure that all
+	anonymous decls of the same kind have the same name for the
+	purpose of comparison.  It also ensures that non anonymous decls
+	that are part of anonymous scopes should be compared only by
+	looking at their non-qualified names.  In the overload for
+	class_or_union, adjust.
+	(scope_decl::add_member_decl): No more need to flag the fast that
+	the parent scope is anonymous here.
+	(get_debug_representation): Fix a thinko.
+	(class_or_union::get_naming_typedef): Remove member function as
+	it's now handled by decl_base::get_naming_typedef.
+	* src/abg-dwarf-reader.cc (build_typedef_type): When a typedef is
+	a naming typedef, then mark the named decl as being typedef-named.
+	(maybe_canonicalize_type): Delay canonicalization of anonymous
+	types because they can be typedef-named later.
+	* src/abg-reader.cc (read_naming_typedef_id_string)
+	(maybe_set_naming_typedef): Define new static function.
+	(build_class_decl): Use it here, rather than reading the
+	"naming-typedef-id" by hand.
+	(build_enum_type_decl, build_union_decl): Read the
+	"naming-typedef-id" property.
+	* src/abg-writer.cc (write_naming_typedef): Make this accept
+	decl_base_sptr, rather than just class_decl_sptr.
+	(write_enum_type_decl): Write the naming-typedef-id property if
+	needed.
+	* tests/data/test-abidiff-exit/test-PR28316-report.txt: New test
+	reference output.
+	* tests/data/test-abidiff-exit/test-PR28316-v{0,1}.cc: Source code
+	of new binary test input.
+	* tests/data/test-abidiff-exit/test-PR28316-v{0,1}.o: New binary
+	test input files.
+	* tests/data/Makefile.am: Add the new test files to the source
+	distribution.
+	* tests/test-abidiff-exit.cc: Add the new test files above to this
+	harness.
+	* tests/data/test-annotate/libtest23.so.abi: Adjust.
+	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
+	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
+	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
+	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
+	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
+	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
+	* tests/data/test-diff-dwarf/test15-enum-report.txt: Likewise.
+	* tests/data/test-diff-filter/test19-enum-report-1.txt: Likewise.
+	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
+	Likewise.
+	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
+	Likewise.
+	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
+	Likewise.
+	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
+	Likewise.
+	* tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Likewise.
+	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
+	Likewise.
+	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
+	Likewise.
+	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt:
+	Likewise.
+	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
+	Likewise.
+	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
+	Likewise.
+	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
+	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
+	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
+
+2021-09-17  Dodji Seketeli <dodji@redhat.com>
+
+	abipkgdiff: Fix showing added/removed files
+	* tools/abipkgdiff.cc (compare_prepared_userspace_packages): Do
+	not return early if there are no binaries to compare.  Also add
+	more verbose messages.
+	* tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt:
+	New reference output file.
+	* tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-compat-4.4.18-3.el9.x86_64-report-1.txt:
+	New reference output file.
+	* tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64.rpm: New
+	binary input file.
+	* tests/data/test-diff-pkg/libxcrypt-4.4.18-3.el9.x86_64.rpm: Likewise.
+	* tests/data/test-diff-pkg/libxcrypt-compat-4.4.18-3.el9.x86_64.rpm: Likewise.
+	* tests/data/test-diff-pkg/libxcrypt-compat-debuginfo-4.4.18-3.el9.x86_64.rpm: Likewise.
+	* tests/data/test-diff-pkg/libxcrypt-debuginfo-4.1.1-6.el8.x86_64.rpm: Likewise.
+	* tests/data/test-diff-pkg/libxcrypt-debuginfo-4.4.18-3.el9.x86_64.rpm: Likewise.
+	* tests/data/Makefile.am: Add the new testing files to source
+	distribution.
+	* tests/test-diff-pkg.cc (in_out_specs): Add these binary packages
+	to this testing harness.
+
+2021-09-09  Dodji Seketeli <dodji@redhat.com>
+
+	RHBZ1944102 - self comparing ABI of protobuf-3.14.0-2.el9 failed
+	* src/abg-reader.cc (read_size_and_alignment): Use atoll to read
+	long long values, not atoi.
+
+2021-09-08  Dodji Seketeli <dodji@redhat.com>
+
+	RHBZ1951496 - ir: Acknowledge that "void type" is not canonicalized
+	* src/abg-ir.cc (is_allowed_non_canonicalized_type): Define new
+	static function.
+	(hash_as_canonical_type_or_constant): Use it.
+
+2021-09-08  Dodji Seketeli <dodji@redhat.com>
+
+	writer: Avoid sigsev on types with no translation unit
+	* src/abg-writer.cc (referenced_type_should_be_emitted): Don't
+	crash on types with no associated translation unit.
+
+2021-09-08  Dodji Seketeli <dodji@redhat.com>
+
+	xml-reader: Get back to original way of building qualified types
+	* src/abg-reader.cc (build_qualified_type_decl): Create the
+	underlying type first, then create the qualified type.
+	This helps fix bug
+
+2021-09-08  Dodji Seketeli <dodji@redhat.com>
+
+	ir: Fix canonical type propagation cancelling
+	* src/abg-ir.cc (return_comparison_result): When the comparison of
+	the current type sub-object fails, clear the potentially
+	propagated canonical type and remove it from the set of types with
+	non confirmed propagated canonical types.
+
+2021-09-08  Dodji Seketeli <dodji@redhat.com>
+
+	ir: Avoid infinite loop during type canonicalization
+	* src/abg-ir-priv.h
+	(environment::priv::collect_types_that_depends_on): Don't try to
+	collect a type that has already been collected.
+
+2021-09-07  Dodji Seketeli <dodji@redhat.com>
+
+	writer: escape enum linkage name in abixml
+	* src/abg-writer.cc (write_enum_type_decl): Escape linkage name.
+
+2021-09-07  Dodji Seketeli <dodji@redhat.com>
+
+	RHBZ-1944096 - assertion failure during self comparison of systemd
+	* src/abg-reader.cc (build_enum_type_decl): When strtoll detects
+	an underflow or overflo, it sets errno to ERANGE.  So take that
+	into account.
+
+2021-09-03  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27985 - abidiff: bad array types in report
+	* src/abg-ir.cc (array_type_def::get_qualified_name): Use the
+	cache for temporary qualified names when the type is not yet
+	canonicalized.  That way, the cache for (non-temporary) qualified
+	names is used only for canonicalized types.
+	* tests/data/test-abidiff/test-PR27985-report.txt: Reference
+	output for the new test.
+	* tests/data/test-abidiff/test-PR27985-v{0,1}.c: Source code for
+	the new test binary inputs.
+	* tests/data/test-abidiff/test-PR27985-v{0,1}.o: New test binary inputs.
+	* tests/data/test-abidiff/test-PR27985-v{0,1}.o.abi: New test
+	abixml input.
+	* tests/data/Makefile.am: Add the new test materials above to
+	source distribution.
+	* tests/test-abidiff.cc (specs): Add the tests above to the harness.
+	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
+	Adjust.
+	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt:
+	Adjust.
+
+2021-08-27  Giuliano Procida <gprocida@google.com>
+
+	abg-writer: faster referenced type emission tests
+	* src/abg-writer.cc (write_translation_unit): Reorder
+	referenced type emission tests for efficiency. Consolidate
+	related comments.
+	Reviewed-by: Matthias Maennich <maennich@google.com>
+
+2021-08-10  Dodji Seketeli <dodji@redhat.com>
+
+	RHBZ 1925886 - Compare anonymous types without qualified names
+	* include/abg-fwd.h (is_anonymous_type): Constify this function.
+	* src/abg-ir.cc (equals): In the overload for decl_base, do not
+	take scope of anonymous types into account.  In the overload for
+	array_type_def do not peel of typedefs.  This is not directly
+	related to anonymous types, but it make comparison more robust
+	against naming typedefs used for anonymous types in array
+	elements.
+	(get_type_name): Do not take into account the scope of anonymous
+	types when building internal representation of types.  Note that
+	the internal representation is what is used for canonicalization.
+	This means that all anonymous types are compared against each
+	others during type canonicalization.
+	* src/abg-reader.cc (build_class_decl): Do not try to re-use
+	anonymous types, just like we already do for DWARF.
+	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
+	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+	Likewise.
+	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Likewise.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
+	Likewise.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
+	Likewise.
+	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
+
+2021-07-29  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27236 - Don't forget to emit some referenced types
+	* include/abg-writer.h (write_translation_unit): Add a new
+	parameter that says if we are emitting the last TU.
+	* src/abg-writer.cc (write_translation_unit::{type_is_emitted,
+	decl_only_type_is_emitted}): Constify these methods.
+	(write_context::has_non_emitted_referenced_types): Define new
+	member function using the const methods above.
+	(write_translation_unit): When emitting the last TU, emit all the
+	referenced types.
+	(write_corpus): Set signal when emitting the last translation
+	unit.
+
+2021-07-29  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27236 - Allow updating classes from abixml
+	* src/abg-reader.cc (build_class_decl): Keep going when the class
+	has already been built.  The rest of the code knows how to add new
+	stuff.
+	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
+
+2021-07-29  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27236 - Fix the canonical type propagation optimization
+	* include/abg-ir.h (pointer_set): This typedef is now for an
+	unordered_set<uintptr_t> rather than an unordered_set<size_t>.
+	(environment::priv_): Make this public so that code in free form
+	function from abg-ir.cc can access it.
+	* src/abg-ir-priv.h (struct type_base::priv): Move this private
+	structure here, from abg-ir.cc.
+	(type_base::priv::{depends_on_recursive_type_,
+	canonical_type_propagated_}): Added these two new data members.
+	(type_base::priv::priv): Initialize the two new data members.
+	(type_base::priv::{depends_on_recursive_type,
+	set_depends_on_recursive_type,
+	set_does_not_depend_on_recursive_type, canonical_type_propagated,
+	set_canonical_type_propagated, clear_propagated_canonical_type}):
+	Define new member functions.
+	(struct environment::priv): Move this struct here, from abg-ir.cc.
+	(environment::priv::{types_with_non_confirmed_propagated_ct_,
+	left_type_comp_operands_, right_type_comp_operands_}): New data
+	members.
+	(environment::priv::{mark_dependant_types,
+	mark_dependant_types_compared_until, confirm_ct_propagation,
+	collect_types_that_depends_on, cancel_ct_propagation,
+	remove_from_types_with_non_confirmed_propagated_ct}): New member
+	functions.
+	* src/abg-ir.cc (struct environment::priv, struct)
+	(type_base::priv, struct class_or_union::priv): Move these struct
+	to include/abg-ir-priv.h.
+	(push_composite_type_comparison_operands)
+	(pop_composite_type_comparison_operands)
+	(mark_dependant_types_compared_until)
+	(maybe_cancel_propagated_canonical_type): Define new functions.
+	(notify_equality_failed, mark_types_as_being_compared): Re-indent.
+	(is_comparison_cycle_detected, return_comparison_result): Define
+	new function templates.
+	(RETURN_TRUE_IF_COMPARISON_CYCLE_DETECTED): Define new macro.
+	(equals(const function_type& l, const function_type& r)): Redefine
+	the RETURN macro using the new return_comparison_result function
+	template.  Use the new RETURN_TRUE_IF_COMPARISON_CYCLE_DETECTED
+	and mark_types_as_being_compared functions.
+	(equals(const class_or_union& l, const class_or_union&, change_kind*)):
+	Likewise.
+	(equals(const class_decl& l, const class_decl&, change_kind*)):
+	Likewise.  Because this uses another equal() function to compare
+	the class_or_union part the type, ensure that no canonical type
+	propagation occurs at that point.
+	(types_are_being_compared): Remove as it's not used anymore.
+	(maybe_propagate_canonical_type): Use the new
+	environment::priv::propagate_ct() function here.
+	(method_matches_at_least_one_in_vector): Ensure the
+	right-hand-side operand of the equality stays on the right.  This
+	is important because the equals() functions expect that.
+	* src/abg-reader.cc (build_type): Ensure all types are
+	canonicalized.
+	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
+	Adjust.
+	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
+	Likewise.
+	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
+	Likewise.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
+	Likewise.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
+	Likewise.
+	* tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise.
+
+2021-06-30  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27995 - Self comparison error from abixml file
+	* doc/manuals/abidiff.rst: Add documentation for the --debug
+	option.
+	* src/abg-ir.cc (equals): In the overload for decl_base consider
+	the internal version of qualified decl name.  In the overload for
+	pointer_type_def do not peel typedefs off from the compared
+	pointed-to types.  In the overload for typedef_decl compare the
+	typedef as a decl as well.  In the overload for var_decl, compare
+	variables that have the same ELF symbols without taking into
+	account their qualified name, rather than their name.  Stop
+	comparing data member without considering their names.
+	In the overload for class_or_union, when a decl-only class that is
+	ODR-relevant is compared against another type, assume that
+	equality if names are equal.  This is useful in environments where
+	some TUs are ODR-relevant and others aren't.
+	(*::get_pretty_representation): Update doxygen comments.
+	(enum_type_decl::get_pretty_representation): Return an internal
+	pretty representation that is stable across all anonymous enums.
+	(var_decl::get_anon_dm_reliable_name): Use the non-internal pretty
+	representation for anonymous data members.
+	(function_type::priv::temp_internal_cached_name_): New data
+	member.
+	(function_type::get_cached_name): Cache the internal name after
+	the function type is canonicalized.  Make sure internal name and
+	non-internal name are cached separately.
+	(class_or_union::find_anonymous_data_member): Look for the anonymous
+	data member by looking at its non-internal name.
+	({class, union}_decl::get_pretty_representation): Use something like "class
+	__anonymous_{union,struct}__" for all anonymous classes, so that they can
+	all be compared against each other during type canonicalization.
+	(type_has_sub_type_changes): Use non-internal pretty
+	representation.
+	(hash_type_or_decl, function_decl_is_less_than:): Use internal
+	pretty representation for comparison here.
+	* src/abg-reader.cc (read_context::maybe_canonicalize_type): Don't
+	early canonicalize array types.
+	* src/abg-writer.cc (annotate): Use non-internal pretty
+	representation.
+	* tests/data/test-diff-filter/test-PR27995-report-0.txt: New
+	reference report.
+	* tests/data/test-diff-filter/test-PR27995.abi: New test input
+	abixml file.
+	* tests/data/Makefile.am: Add test-PR27995.abi,
+	test-PR27995-report-0.txt to the source distribution.
+	* tests/data/test-annotate/libtest23.so.abi: Adjust.
+	* tests/data/test-diff-dwarf/test6-report.txt: Adjust.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Adjust.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Adjust.
+	* tests/data/test-diff-filter/test41-report-0.txt: Adjust.
+	* tests/data/test-diff-filter/test43-decl-only-def-change-leaf-report-0.txt: Adjust.
+	* tests/data/test-diff-filter/test8-report.txt: Adjust.
+	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt:
+	Adjust.
+	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
+	Adjust.
+	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
+	Adjust.
+	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
+	Adjust.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
+	Adjust.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
+	Adjust.
+	* tests/data/test-diff-suppr/test39-opaque-type-report-0.txt: Adjust.
+	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Adjust.
+	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
+	* tests/data/test-read-dwarf/libtest23.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Adjust.
+	* tests/test-diff-filter.cc (in_out_specs): Add the
+	test-PR27995.abi to the test harness.
+	* tools/abidiff.cc (options::do_debug): New data member.
+	(options::options): Initialize it.
+	(parse_command_line): Parse --debug.
+	(main): Activate self comparison debug if the user provided
+	--debug.
+
+2021-06-25  Dodji Seketeli <dodji@redhat.com>
+
+	ir: Tighten type comparison optimization for Linux kernel binaries
+	* src/abg-ir.cc (types_defined_same_linux_kernel_corpus_public):
+	Ensure that anonymous classes with naming typedefs have identical
+	typedef names.
+
+2021-06-25  Dodji Seketeli <dodji@redhat.com>
+
+	ir: Tighten the test for anonymous data member
+	* src/abg-ir.cc: (is_anonymous_data_member): Consider
+	decl_base::get_is_anonymous as well.
+
+2021-06-24  Dodji Seketeli <dodji@redhat.com>
+
+	ir: Improve the debugging facilities
+	* src/abg-ir.cc (maybe_compare_as_member_decls): Add a missing
+	ABG_RETURN
+	(get_debug_representation): Display the name of class and enums,
+	not their pretty representation.
+
+2021-07-10  Giuliano Procida <gprocida@google.com>
+
+	PR28060 - Invalid offset for bitfields
+	* src/abg-dwarf-reader.cc (read_and_convert_DW_at_bit_offset):
+	Update documentation.
+	(die_member_offset): Treat DW_AT_bit_offset as an optional
+	adjustment to DW_AT_data_member_location.
+	* tests/data/test-annotate/test13-pr18894.so.abi: Update.
+	* tests/data/test-annotate/test15-pr18892.so.abi: Update.
+	* tests/data/test-annotate/test17-pr19027.so.abi: Update.
+	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Update.
+	* tests/data/test-annotate/test21-pr19092.so.abi: Update.
+	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
+	Regenerate.
+	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
+	Report now empty.
+	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Update.
+	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
+	Update.
+	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Update.
+	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Update.
+	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Update.
+	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Update.
+	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Update.
+	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+	Update.
+
+2021-07-07  Giuliano Procida <gprocida@google.com>
+
+	abg-ir.h: add declaration of operator<< for elf_symbol::visibility
+	* include/abg-ir.h (operator<<(elf_symbol::visibility): Add
+	declaration.
+
+2021-07-06  Giuliano Procida <gprocida@google.com>
+
+	ir: remove "is Linux string constant" property from elf_symbol
+	* include/abg-ir.h (elf_symbol::elf_symbol): Drop
+	is_linux_string_cst argument.
+	(elf_symbol::create): Likewise.
+	(elf_symbol::get_is_linux_string_cst): Drop method.
+	* src/abg-dwarf-reader.cc (lookup_symbol_from_sysv_hash_tab):
+	Remove code that gets the index of the __ksymtab_strings
+	section. Drop corresponding elf_symbol::create argument.
+	(lookup_symbol_from_gnu_hash_tab): Likewise.
+	(lookup_symbol_from_symtab): Likewise.
+	(create_default_fn_sym): Drop false is_linux_string_cst
+	argument to elf_symbol::create.
+	* src/abg-ir.cc (elf_symbol::priv::is_linux_string_cst_): Drop
+	member variable.
+	(elf_symbol::priv default ctor): Drop initialisation of
+	is_linux_string_cst_.
+	(elf_symbol::priv normal ctor): Drop is_linux_string_cst
+	argument and corresponding is_linux_string_cst_
+	initialisation.
+	(elf_symbol::elf_symbol ctor): Drop is_linux_string_cst
+	argument and corresponding forwarding to priv ctor.
+	(elf_symbol::create): Drop is_linux_string_cst argument and
+	corresponding forwarding to ctor.
+	(elf_symbol::get_is_linux_string_cst): Drop method.
+	* src/abg-reader.cc (build_elf_symbol): Drop false
+	is_linux_string_cst argument to elf_symbol::create.
+	* src/abg-symtab-reader.cc (symtab::load): Likewise.
+
+2021-07-05  Matthias Maennich <maennich@google.com>
+
+	Consistently use std::unique_ptr for private implementations (pimpl)
+	* include/abg-comparison.h (diff_maps): use unique_ptr for priv_
+	(diff_context): Likewise.
+	(diff_traversable_base): Likewise.
+	(type_diff_base): Likewise.
+	(decl_diff_base): Likewise.
+	(distinct_diff): Likewise.
+	(var_diff): Likewise.
+	(pointer_diff): Likewise.
+	(reference_diff): Likewise.
+	(array_diff): Likewise.
+	(qualified_type_diff): Likewise.
+	(enum_diff): Likewise.
+	(class_or_union_diff): Likewise.
+	(class_diff): Likewise.
+	(base_diff): Likewise.
+	(scope_diff): Likewise.
+	(fn_parm_diff): Likewise.
+	(function_type_diff): Likewise.
+	(function_decl_diff): Likewise.
+	(typedef_diff): Likewise.
+	(translation_unit_diff): Likewise.
+	(diff_stats): Likewise.
+	(diff_node_visitor): Likewise.
+	* include/abg-corpus.h (corpus): Likewise.
+	(exported_decls_builder): Likewise.
+	(corpus_group): Likewise.
+	* include/abg-ini.h (property): Likewise.
+	(property_value): Likewise.
+	(string_property_value): Likewise.
+	(list_property_value): Likewise.
+	(tuple_property_value): Likewise.
+	(simple_property): Likewise.
+	(list_property): Likewise.
+	(tuple_property): Likewise.
+	(config): Likewise.
+	(section): Likewise.
+	(function_call_expr): Likewise.
+	* include/abg-interned-str.h (interned_string_pool): Likewise.
+	* include/abg-ir.h (environment): Likewise.
+	(location_manager): Likewise.
+	(type_maps): Likewise.
+	(translation_unit): Likewise.
+	(elf_symbol::version): Likewise.
+	(type_or_decl_base): Likewise.
+	(scope_decl): Likewise.
+	(qualified_type_def): Likewise.
+	(pointer_type_def): Likewise.
+	(array_type_def): Likewise.
+	(subrange_type): Likewise.
+	(enum_type_decl): Likewise.
+	(enum_type_decl::enumerator): Likewise.
+	(typedef_decl): Likewise.
+	(dm_context_rel): Likewise.
+	(var_decl): Likewise.
+	(function_decl::parameter): Likewise.
+	(function_type): Likewise.
+	(method_type): Likewise.
+	(template_decl): Likewise.
+	(template_parameter): Likewise.
+	(type_tparameter): Likewise.
+	(non_type_tparameter): Likewise.
+	(template_tparameter): Likewise.
+	(type_composition): Likewise.
+	(function_tdecl): Likewise.
+	(class_tdecl): Likewise.
+	(class_decl::base_spec): Likewise.
+	(ir_node_visitor): Likewise.
+	* include/abg-suppression.h (suppression_base): Likewise.
+	(type_suppression::insertion_range): Likewise.
+	(type_suppression::insertion_range::boundary): Likewise.
+	(type_suppression::insertion_range::integer_boundary): Likewise.
+	(type_suppression::insertion_range::fn_call_expr_boundary): Likewise.
+	(function_suppression): Likewise.
+	(function_suppression::parameter_spec): Likewise.
+	(file_suppression): Likewise.
+	* include/abg-tools-utils.h (temp_file): Likewise.
+	(timer): Likewise.
+	* include/abg-traverse.h (traversable_base): Likewise.
+	* include/abg-workers.h (queue): Likewise.
+	* src/abg-comparison.cc (diff_context): add default destructor.
+	(diff_maps): Likewise.
+	(corpus_diff): Likewise.
+	(diff_node_visitor): Likewise.
+	(class_or_union_diff::get_priv): adjust return type.
+	(class_diff::get_priv): adjust return type.
+	* src/abg-corpus.cc (corpus): add default destructor.
+	* src/abg-ir.cc (location_manager): Likewise.
+	(type_maps): Likewise.
+	(elf_symbol::version): Likewise.
+	(array_type_def::subrange_type): Likewise.
+	(enum_type_decl::enumerator): Likewise.
+	(function_decl::parameter): Likewise.
+	(class_decl::base_spec): Likewise.
+	(ir_node_visitor): Likewise.
+
+2021-06-14  Matthias Maennich <maennich@google.com>
+
+	symtab-reader: add support for binaries compiled with CFI
+	* src/abg-symtab-reader.cc (symtab::load_): use new
+	add_alternative_address_lookups method.
+	(add_alternative_address_lookups): New method.
+	* src/abg-symtab-reader.h (add_alternative_address_lookups): new
+	function declaration.
+	* tests/data/test-read-dwarf/test-libaaudio.so: New test data.
+	* tests/data/test-read-dwarf/test-libaaudio.so.abi: New test data.
+	* tests/data/Makefile.am: Add the two new tests input to source
+	distribution.
+	* tests/test-read-dwarf.cc: New test case.
+	Reported-by: Dan Albert <danalbert@google.com>
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+
+2021-06-14  Matthias Maennich <maennich@google.com>
+
+	elf-helpers: refactor find_symbol_table_section
+	* src/abg-elf-helpers.cc(find_section): New overload.
+	(find_symtab_section): New function.
+	(find_dynsym_section): New function.
+	(find_symbol_table_section): Use new find_*_section functions.
+	* src/abg-elf-helpers.h(find_section): New overload declaration.
+	(find_symtab_section): New function declaration.
+	(find_dynsym_section): New function declaration.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+
+2021-06-18  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27980 - Fix updating of type scope upon type canonicalization
+	* src/abg-ir.cc (canonicalize): Update the
+	scope_decl::get_canonical_types() of canonical type of the
+	containing type of the newly canonicalized type.
+	* src/abg-writer.cc (write_union_decl): Write the canonical types
+	contained in the current union scope, just like we do for classes.
+	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
+	* tests/data/test-types-stability/pr27980-libc.so: New binary
+	input file.
+	* tests/data/Makefile.am: Add the test input file above to source
+	distribution.
+	* tests/test-types-stability.cc (elf_paths): Add the new test
+	input file to this test harness.
+
+2021-05-27  Giuliano Procida <gprocida@google.com>
+
+	abg-reader: Create a fresh corpus object per corpus
+	* src/abg-reader.cc (read_corpus_from_input): Always create a
+	fresh corpus object for each abi-corpus XML element.
+
+2021-05-27  Giuliano Procida <gprocida@google.com>
+
+	abg-reader: Ensure corpus always has a symtab reader
+	* src/abg-reader.cc (read_symbol_db_from_input): Fix
+	documentation for this function. Allow "successful parsing" to
+	include the case where no symbols were present in the input.
+	(read_corpus_from_input): Unconditionally set a symtab reader
+	on the corpus object. Unconditionally parse the abi-instr of a
+	corpus.
+
+2021-05-27  Giuliano Procida <gprocida@google.com>
+
+	dwarf-reader: Create new corpus unconditionally
+	* src/abg-dwarf-reader.cc (read_debug_info_into_corpus):
+	Create new corpus object unconditionally.
+
+2021-06-09  Ben Woodard via Libabigail <libabigail@sourceware.org>
+
+	Fix trivial typo when printing version string
+	* tools/abicompat.cc (main): Add a newline after version string.
+
+2021-06-10  Dodji Seketeli <dodji@redhat.com>
+
+	Revert "Fix trivial typo when printing version string"
+	* tools/abicompat.cc:
+
+2021-06-09  Ben Woodard via Libabigail <libabigail@sourceware.org>
+
+	Fix trivial typo when printing version string
+	* tools/abicompat.cc:
+
+2021-06-10  Dodji Seketeli <dodji@redhat.com>
+
+	doc: Fix typo
+	* doc/manuals/libabigail-concepts.rst: Fix typo.
+
+2021-06-09  Dodji Seketeli <dodji@redhat.com>
+
+	abg-reader: Fix typo
+	* src/abg-reader.cc
+	(read_context::maybe_check_abixml_canonical_type_stability): Fix
+	typo.
+
+2021-06-09  Dodji Seketeli <dodji@redhat.com>
+
+	abidw: Remove temporary .typeid files when using --debug-abidiff
+	* tools/abidw.cc (load_corpus_and_write_abixml): Remove temporary
+	typeid file after its use.
+
+2021-06-08  Dodji Seketeli <dodji@redhat.com>
+
+	Fix recursive array type definition
+	* include/abg-ir.h (array_type_def::update_size): Declare new
+	private member function.
+	(array_type_def::array_type_def): Declare ...
+	* src/abg-ir.cc (array_type_def::array_type_def): ... a new
+	constructor that takes no element type.
+	(array_type_def::update_size): Define this helper private member
+	function.
+	(array_type_def::get_subrange_representation): Adjust for this to
+	work when there is no element type setup yet.
+	(array_type_def::{set_element_type, append_subranges}): Update the
+	size and name of the array.
+	* src/abg-reader.cc (build_array_type_def): Create the array type
+	before the element type so that the later can re-use the former.
+
+2021-06-07  Dodji Seketeli <dodji@redhat.com>
+
+	rhbz1951526 - SELF CHECK FAILED for 'gimp-2.10'
+	* include/abg-ir.h
+	(environment::use_enum_binary_only_equality): Declare
+	accessors.  (type_or_decl_base::{s,g}et_is_artificial):
+	Likewise.  (decl_base::{s,g}et_is_artificial): Remove
+	accessors.  * src/abg-ir.cc
+	(environment::priv::use_enum_binary_only_equality): Define new
+	data member.
+	(environment::priv::use_enum_binary_only_equality): Define
+	accessors.  (type_or_decl_base::priv::is_artificial_): Define
+	new data member.  It has actually moved here from
+	decl_base::priv::is_artificial_.
+	(type_or_decl_base::priv::priv): Initialize it.
+	(type_or_decl_base::{g,s}et_is_artificial): Define accessors.
+	(decl_base::is_artificial_): Move this to
+	type_or_decl_base::is_artificial_.
+	(maybe_adjust_canonical_type): In a given class of equivalence
+	of function types, if there is one non-artificial function
+	type, then the entire class of equivalence is considered
+	non-artificial; so flag the canonical function type as being
+	non-artificial.  (is_enumerator_present_in_enum): Define new
+	static function.  (equals): Re-arrange the overload for enums
+	so the order of the enumerators doesn't count in the
+	comparison.  Also, two enums with different numbers of
+	enumerators can still be equal, with the right redundancy.  In
+	the overload for var_decl, avoid taking into account the names
+	of data members in the comparison.
+	(enum_type_decl::enumerator::operator==): In the binary-level
+	comparison mode, only compare the value of enumerators, not
+	their name.  * src/abg-comparison.cc (compute_diff): In the
+	overload for enum_type_decl, if the enums compare different
+	using binary-level comparison, then use source-level
+	comparison to build the diff-IR.  * src/abg-dwarf-reader.cc
+	(read_context::compare_before_canonicalisation): Compare enums
+	using binary-level comparison.  (add_or_update_class_type): If
+	we are looking at the definition of an existing declaration
+	that has been already defined then use the previous
+	definition, in case we are going to need to update the
+	definition.  Also, update the size only if it's needed.
+	(build_function_type): By default, consider the newly built
+	function type as artificial.  (build_ir_node_from_die): When
+	looking at a DW_TAG_subroutine_type DIE, consider the built
+	function type as non-artificial.  * src/abg-reader.cc
+	(read_context::maybe_check_abixml_canonical_type_stability):
+	Don't consider declaration-only classes in an ODR context
+	because they don't have canonical types.
+	(build_function_decl): Flag the function type of the function
+	as artificial.  (build_class_decl): Make sure to reuse class
+	types that were already created.  * src/abg-writer.cc
+	(write_translation_unit): Allow emitting empty classes.  Make
+	sure referenced types are emitting in the translation unit
+	where they belong.  Avoid emitting artificial function types.
+	*
+	tests/data/test-alt-dwarf-file/rhbz1951526/rhbz1951526-report-0.txt:
+	New test reference output.  *
+	tests/data/test-alt-dwarf-file/rhbz1951526/usr/bin/gimp-2.10:
+	New reference test binary input.  *
+	tests/data/test-alt-dwarf-file/rhbz1951526/usr/lib/debug/.dwz/gimp-2.10.22-2.el9.1.aarch64:
+	Likewise.  *
+	tests/data/test-alt-dwarf-file/rhbz1951526/usr/lib/debug/usr/bin/gimp-2.10-2.10.22-2.el9.1.aarch64.debug:
+	Likewise.  * tests/data/Makefile.am: Add the new test files to
+	source directory.  * tests/test-alt-dwarf-file.cc: Add the new
+	test inputs to this test harness.  *
+	tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.  *
+	tests/data/test-abidiff/test-enum0-report.txt: Likewise.  *
+	tests/data/test-annotate/libtest23.so.abi: Likewise.  *
+	tests/data/test-annotate/libtest24-drop-fns-2.so.abi:
+	Likewise.  *
+	tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
+	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
+	Likewise.  * tests/data/test-annotate/test13-pr18894.so.abi:
+	Likewise.  * tests/data/test-annotate/test14-pr18893.so.abi:
+	Likewise.  * tests/data/test-annotate/test15-pr18892.so.abi:
+	Likewise.  * tests/data/test-annotate/test17-pr19027.so.abi:
+	Likewise.  *
+	tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+	Likewise.  *
+	tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Likewise.  *
+	tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+	Likewise.  * tests/data/test-annotate/test21-pr19092.so.abi:
+	Likewise.  *
+	tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
+	Likewise.  *
+	tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
+	Likewise.  * tests/data/test-diff-dwarf/test6-report.txt:
+	Likewise.  *
+	tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
+	Likewise.  *
+	tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
+	Likewise.  * tests/data/test-diff-filter/test8-report.txt:
+	Likewise.  *
+	tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
+	Likewise.  *
+	tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
+	Likewise.  *
+	tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
+	Likewise.  *
+	tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
+	Likewise.  *
+	tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
+	Likewise.  *
+	tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
+	*
+	tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
+	Likewise.  *
+	tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise.
+	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.  *
+	tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
+	Likewise.  *
+	tests/data/test-read-dwarf/libtest24-drop-fns.so.abi:
+	Likewise.  *
+	tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi:
+	Likewise.  * tests/data/test-read-dwarf/test12-pr18844.so.abi:
+	Likewise.  * tests/data/test-read-dwarf/test13-pr18894.so.abi:
+	Likewise.  * tests/data/test-read-dwarf/test14-pr18893.so.abi:
+	Likewise.  * tests/data/test-read-dwarf/test15-pr18892.so.abi:
+	Likewise.  * tests/data/test-read-dwarf/test16-pr18904.so.abi:
+	Likewise.  * tests/data/test-read-dwarf/test17-pr19027.so.abi:
+	Likewise.  *
+	tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+	Likewise.  *
+	tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Likewise.  *
+	tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+	Likewise.  * tests/data/test-read-dwarf/test21-pr19092.so.abi:
+	Likewise.  *
+	tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+	Likewise.  *
+	tests/data/test-read-dwarf/test9-pr18818-clang.so.abi:
+	Likewise.  *
+	tests/data/test-read-write/test28-without-std-fns-ref.xml:
+	Likewise.  *
+	tests/data/test-read-write/test28-without-std-vars-ref.xml:
+	Likewise.
+
+2021-06-07  Dodji Seketeli <dodji@redhat.com>
+
+	reader: Canonicalizing a type once is enough
+	* src/abg-reader.cc (build_type): Don't try to canonicalize the
+	type here because all the sub-routines of this function (which
+	actually build the type) already try to canonicalize it.
+
+2021-06-07  Dodji Seketeli <dodji@redhat.com>
+
+	ir: make 'debug(artefact)' support showing enums
+	* src/abg-ir.cc (get_debug_representation): Add support for
+	showing details for enums.  Also show declaration-only-ness for
+	class or unions.
+
+2021-06-07  Dodji Seketeli <dodji@redhat.com>
+
+	location:expand() shouldn't crash when no location manager available
+	* src/abg-ir.cc (location::expand): When no location manager is
+	present, just expand to an empty location.
+
+2021-06-07  Dodji Seketeli <dodji@redhat.com>
+
+	Add environment::{get_type_id_from_pointer,get_canonical_type_from_type_id}
+	* include/abg-ir.h (environment::{get_pointer_type_id_map,
+	get_type_id_from_pointer, get_canonical_type_from_type_id}):
+	Declare new member functions.
+	* src/abg-ir.cc (environment::{get_pointer_type_id_map,
+	get_type_id_from_pointer, get_canonical_type_from_type_id}):
+	Define member functions.
+	(environment::priv::pointer_type_id_map_): Move
+	this data member here from ...
+	* src/abg-reader.cc (read_context::m_pointer_type_id_map):
+	... here.
+	(read_context::get_pointer_type_id_map): Remove this as it's now
+	defined in environment::get_pointer_type_id_map.
+	(read_context::maybe_check_abixml_canonical_type_stability):
+	Adjust.
+	(build_type): Likewise.
+
+2021-06-07  Dodji Seketeli <dodji@redhat.com>
+
+	ir: Enable setting breakpoint on first type inequality
+	* src/abg-ir.cc (notify_equality_failed): Define new static
+	function if WITH_DEBUG_SELF_COMPARISON is defined.
+	(ABG_RETURN_EQUAL, ABG_RETURN_FALSE, ABG_RETURN): Define new macros.
+	(try_canonical_compare): Use ABG_RETURN_EQUAL rather than just
+	returning the result of a comparison.
+	(equals): In all the overloads, use the new ABG_RETURN* macros,
+	rather than just returning boolean values.
+
+2021-05-22  Dodji Seketeli <dodji@redhat.com>
+
+	xml reader: Fix recursive qualified & reference type definition
+	* include/abg-ir.h (qualified_type_def::qualified_type_def):
+	Declare a constructor with no underlying type.
+	(reference_type_def::reference_type_def): Declare a constructor
+	with no pointed-to type.
+	(reference_type_def::set_pointed_to_type): Declare new method.
+	* src/abg-ir.cc (qualified_type_def::priv::priv): Define a
+	constructor that takes no underlying type.
+	(qualified_type_def::build_name): Make this work even on
+	incomplete types with no underlying type.  In that case, this
+	behaves like if the underlying type is "void".
+	(qualified_type_def::qualified_type_def): Define a constructor
+	that takes no underlying type.
+	(qualified_type_def::get_size_in_bits): Make this work on
+	incomplete types with no underlying type.
+	(qualified_type_def::set_underlying_type): Adjust to properly
+	update this type when a new underlying type is set.  Particularly,
+	its name and the lookup maps from the type scope.
+	(reference_type_def::reference_type_def): Define a constructor
+	that takes no pointed-to type.
+	(reference_type_def::set_pointed_to_type): Define new function.
+	* src/abg-reader.cc (build_qualified_type_decl): Construct the
+	qualified type early before we try to construct its underlying
+	type.  Associate this incomplete type with the type-id.  Then try
+	to construct the underlying type.  During its construction, if
+	this incomplete qualified type is needed due to recursion then it
+	can be used, leading to just one qualified type being used as it
+	should be.
+	(build_reference_type_def): Likewise for building incomplete
+	reference type first before its pointed-to type.
+
+2021-05-21  Dodji Seketeli <dodji@redhat.com>
+
+	abixml reader: Fix recursive type definition handling
+	* include/abg-ir.h (pointer_type_def::pointer_type_def): Declare a
+	constructor with no pointed-to type.
+	(pointer_type_def::set_pointed_to_type): Declare new method.
+	(typedef_decl::typedef_decl): Declare a constructor with no
+	underlying type.
+	* src/abg-ir.cc (pointer_type_def::pointer_type_def): Define a
+	constructor with no pointed-to type.  The pointed-to type can thus
+	later be set when it becomes available.
+	(pointer_type_def::set_pointed_to_type): Define new method.
+	(pointer_type_def::get_qualified_name): Make this work on a
+	pointer type that (momentarily) has no pointed-to type.
+	(typedef_decl::typedef_decl): Define a constructor with no
+	underlying type.
+	(typedef_decl::get_size_in_bits): Make this work on a typedef that
+	has (momentarily) no underlying type.
+	(typedef_decl::set_underlying_type): Update the size and alignment
+	of the typedef from its new underlying type.
+	* src/abg-reader.cc (build_pointer_type_def): Construct the
+	pointer type early /BEFORE/ we even try to construct its
+	pointed-to type.  Associate this incomplete type with the type-id.
+	Then try to construct the pointed-to type.  During the
+	construction of the pointed-to type, if this pointer is needed
+	(due to recursion) then the incomplete pointer type can be used,
+	leading to just one pointer type used (recursively) as it should
+	be.
+	(build_typedef_decl): Likewise for building typedef type early
+	without its underlying type so that it can used by the underlying
+	type if needed.
+	* tests/data/test-diff-pkg/graphviz-2.44.0-18.el9.aarch64-self-check-report-0.txt:
+	New test reference output.
+	* tests/data/test-diff-pkg/graphviz-2.44.0-18.el9.aarch64.rpm: New
+	binary test input.
+	* tests/data/test-diff-pkg/graphviz-debuginfo-2.44.0-18.el9.aarch64.rpm: Likewise.
+	* tests/data/Makefile.am: Add the new test material above to
+	source distribution.
+	* tests/test-diff-pkg.cc (in_out_specs): Add the test inputs above
+	to this test harness.
+
+2021-05-20  Dodji Seketeli <dodji@redhat.com>
+
+	Introduce artificial locations
+	* include/abg-fwd.h (get_artificial_or_natural_location): Declare
+	new function.
+	* include/abg-ir.h (location::location): Initialize & copy ...
+	(location::is_artificial_): ... a new data member.
+	(location::{g,s}et_is_artificial): New accessors.
+	(location::{operator=}): Adjust.
+	(type_or_decl_base::{set,get,has}_artificial_location): Declare
+	new member functions.
+	* src/abg-ir.cc (decl_topo_comp::operator()): In the overload for
+	decl_base*, use artificial location for topological sort in
+	priority.  Otherwise, use natural location.  Otherwise, sort
+	lexicographically.
+	(type_topo_comp::operator()): In the overload for type_base*, use
+	lexicographical sort only for types that don't have location at
+	all.
+	(type_or_decl_base::priv::artificial_location_): Define new data
+	member.
+	(type_or_decl_base::{set,get,has}_artificial_location): Define new
+	member functions.
+	(decl_base::priv): Allow a constructor without location.  That one
+	sets no natural location to the artifact.
+	(decl_base::decl_base): Use decl_base::set_location in the
+	constructor now.
+	(decl_base::set_location): Adjust this to support setting a
+	natural or an artificial location.
+	(get_debug_representation): Emit debugging log showing the
+	location of an artifact, using its artificial location in
+	priority.
+	(get_natural_or_artificial_location): Define new function.
+	* src/abg-reader.cc (read_artificial_location)
+	(maybe_set_artificial_location): Define new static functions.
+	(read_location): Read artificial location when no natural location
+	was found.
+	(build_namespace_decl, build_function_decl, build_type_decl)
+	(build_qualified_type_decl, build_pointer_type_def)
+	(build_reference_type_def, build_subrange_type)
+	(build_array_type_def, build_enum_type_decl, build_typedef_decl)
+	(build_class_decl, build_union_decl, build_function_tdecl)
+	(build_class_tdecl, build_type_tparameter)
+	(build_non_type_tparameter, build_template_tparameter): Read and
+	set artificial location.
+	* src/abg-writer.cc (write_location): Don't serialize artificial
+	locations.
+	(write_namespace_decl): Topologically sort member declarations
+	before serializing them.
+	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
+	Adjust.
+	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
+	Likewise.
+	* tests/data/test-annotate/libtest23.so.abi: Likewise.
+	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
+	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
+	* tests/data/test-annotate/test0.abi: Likewise.
+	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
+	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
+	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
+	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
+	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+	Likewise.
+	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Likewise.
+	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+	Likewise.
+	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
+	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
+	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise.
+	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
+	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
+	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test-suppressed-alias.o.abi: Likewise.
+	* tests/data/test-read-dwarf/test0.abi: Likewise.
+	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
+	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
+	Likewise.
+	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
+	Likewise.
+
+2021-05-19  Dodji Seketeli <dodji@redhat.com>
+
+	Detect abixml canonical type instability during abidw --debug-abidiff
+	* include/abg-ir.h (environment::get_type_id_canonical_type_map):
+	Declare new data member.
+	* src/abg-ir.cc (environment::priv::type_id_canonical_type_map_):
+	Define new data member.
+	(environment::get_type_id_canonical_type_map): Define new method.
+	* include/abg-reader.h (load_canonical_type_ids): Declare new
+	function.
+	* src/abg-reader.cc (read_context::m_pointer_type_id_map):
+	Define new data member.
+	(read_context::{get_pointer_type_id_map,
+	maybe_check_abixml_canonical_type_stability}): Define new methods.
+	(read_context::{maybe_canonicalize_type,
+	perform_late_type_canonicalizing}): Invoke
+	maybe_perform_self_comparison_canonical_type_check after
+	canonicalization to perform canonicalization type stability
+	checking.
+	(build_type): Associate the pointer value for the newly built type
+	with the type id string identifying it in the abixml.  Once the
+	abixml representation is dropped from memory and we are about to
+	perform type canonicalization, we can still know what the type id
+	of a given type coming from abixml was; it's thus possible to
+	verify that the canonical type associated to that type id is the
+	same as the one stored in the typeid file.
+	(read_type_id_string): Define new static function.
+	(load_canonical_type_ids): Define new function.
+	* include/abg-writer.h (write_canonical_type_ids): Likewise.
+	* src/abg-writer.cc (write_canonical_type_ids): Define new
+	function overloads.
+	* tools/abidw.cc (options::type_id_file_path): New data member.
+	(load_corpus_and_write_abixml): Write and read back the typeid
+	file.
+
+2021-05-18  Dodji Seketeli <dodji@redhat.com>
+
+	Detect failed self comparison in type canonicalization of abixml
+	* doc/manuals/abidw.rst: Add documentation for the --debug-abidiff
+	option.
+	* include/abg-ir.h (environment::{set_self_comparison_debug_input,
+	get_self_comparison_debug_inputs, self_comparison_debug_is_on}):
+	Declare new methods.
+	* configure.ac: Define a new --enable-debug-self-comparison option
+	that is disabled by default.  That option defines a new
+	WITH_DEBUG_SELF_COMPARISON preprocessor macro.
+	* src/abg-ir.cc
+	(environment::priv::{first_self_comparison_corpus_,
+	second_self_comparison_corpus_, self_comparison_debug_on_}): New
+	data members.  Also, re-indent the data members.
+	(environment::{set_self_comparison_debug_input,
+	get_self_comparison_debug_inputs, self_comparison_debug_is_on}):
+	Define new method.
+	(type_base::get_canonical_type_for): In the "debug self comparison
+	mode", if a type coming from the second corpus compares different
+	from its counterpart coming from the first corpus then log a debug
+	message.
+	* src/abg-dwarf-reader.cc (read_debug_info_into_corpus): When
+	loading the first corpus, if the debug self comparison mode is on,
+	then save that corpus on the side in the environment.
+	* src/abg-reader.cc (read_corpus_from_input): When loading the
+	second corpus, if the debug self comparison mode is on, then save
+	that corpus on the side in the environment.
+	* tools/abidw.cc: Include the config.h file for preprocessor
+	macros defined at configure
+	(options::debug_abidiff): New data member.
+	(parse_command_line): Parse the --debug-abidiff option.
+	(load_corpus_and_write_abixml): Switch the self debug mode on when
+	the --debug-abidiff option is provided.  Use a read_context for
+	the abixml loading.  That is going to be useful for subsequent
+	patches.
+
+2021-05-17  Dodji Seketeli <dodji@redhat.com>
+
+	Add primitives callable from the command line of the debugger
+	* include/abg-fwd.h (get_debug_representation, get_data_member)
+	(debug, debug_equals): Declare new functions.
+	* include/abg-ir.h (environment{get_canonical_types,
+	get_canonical_type}): Declare new member functions.
+	* src/abg-ir.cc (environment::{get_canonical_types,
+	get_canonical_type}): Define new member functions.
+	(get_debug_representation, get_data_member)
+	(debug, debug_equals): Define new functions.
+
+2021-05-24  Dodji Seketeli <dodji@redhat.com>
+
+	Peel array types when peeling pointers from a type
+	* src/abg-ir.cc (peel_typedef_pointer_or_reference_type): In the
+	overloads for type_base_sptr and type_base*, peel array type off
+	as well.
+
+2021-05-24  Dodji Seketeli <dodji@redhat.com>
+
+	Fix DWARF type DIE canonicalization
+	* src/abg-dwarf-reader.cc (compare_dies): When comparing array
+	type DIEs, take into account the type of the elements of the
+	arrays.
+
+2021-05-24  Dodji Seketeli <dodji@redhat.com>
+
+	Miscellaneous indentation and comments cleanups
+	* src/abg-ir.cc (environment::priv::{config_, canonical_types_,
+	sorted_canonical_types_, void_type_, variadic_marker_type_}):
+	Re-indent these data members.
+	(peel_typedef_pointer_or_reference_type): Fix comment.
+	(var_decl::var_decl): Likewise.
+	(function_decl::function_decl): Add a comment.
+	* src/abg-reader.cc (handle_reference_type_def): Fix indentation
+	of parameters.
+
+2021-05-20  Dodji Seketeli <dodji@redhat.com>
+
+	Fix thinko in configure.ac
+	* configure.ac: Fix a thinko I spotted while looking at something
+	else.
+
+2021-04-19  Dodji Seketeli <dodji@redhat.com>
+
+	reader: Use xmlFirstElementChild/xmlNextElementSibling to iterate over children elements
+	* src/abg-reader.cc (walk_xml_node_to_map_type_ids)
+	(read_translation_unit, read_translation_unit_from_input)
+	(read_symbol_db_from_input, build_needed)
+	(read_elf_needed_from_input, read_corpus_group_from_input)
+	(build_namespace_decl, build_elf_symbol_db, build_function_decl)
+	(build_function_type, build_array_type_def, build_enum_type_decl)
+	(build_class_decl, build_union_decl, build_function_tdecl)
+	(build_class_tdecl, build_type_composition)
+	(build_template_tparameter): Use
+	xmlFirstElementChild/xmlNextElementSibling rather than poking at
+	xmlNode::children and looping over xmlNode::next by hand.
+
+2021-04-19  Dodji Seketeli <dodji@redhat.com>
+
+	reader: Use xmlFirstElementChild and xmlNextElementSibling rather than xml::advance_to_next_sibling_element
+	* include/abg-libxml-utils.h (advance_to_next_sibling_element):
+	Remove the declaration of this function.
+	* src/abg-libxml-utils.cc (go_to_next_sibling_element_or_stay)
+	(advance_to_next_sibling_element): Remove definitions of these functions.
+	* src/abg-reader.cc (read_translation_unit_from_input)
+	(read_elf_needed_from_input, read_corpus_group_from_input): Use xmlNextElementSibling instead
+	of xml::advance_to_next_sibling_element.
+	(read_corpus_from_input): Likewise.  Also, use
+	xmlFirstElementChild instead of
+	xml::advance_to_next_sibling_element on the xmlNode::children data
+	member.
+	(read_corpus_group_from_input): use xmlFirstElementChild instead
+	of xml::advance_to_next_sibling_element on the xmlNode::children
+	data member.
+
+2021-04-14  Dodji Seketeli <dodji@redhat.com>
+
+	reader: Handle 'abi-corpus' element being possibly empty
+	* src/abg-reader.cc (read_context::get_corpus_node): Add comment
+	to this member function.
+	(read_translation_unit_from_input, read_symbol_db_from_input)
+	(read_elf_needed_from_input): Start processing the current node of
+	the corpus that needs to be processed rather than its next
+	sibling.  Once the processing is done, set the new "current node
+	of the corpus to be processed" properly by skipping to the next
+	element node to be processed.
+	(read_corpus_from_input): Don't get out early when the
+	'abi-corpus' element is empty.  If, however, it has children node,
+	skip to the first child element and flag it -- using
+	read_context::set_corpus_node -- as being the element node to be
+	processed by the processing facilities of the reader.  If we are
+	in a mode where we called xmlTextReaderExpand ourselves to get the
+	node to process, then it means we need to free that node
+	indirectly by calling xmlTextReaderNext.  In that case, that node
+	should not be flagged by read_context::set_corpus_node.  Add more
+	comments.
+	* src/abg-corpus.cc (corpus::is_empty): Do not crash when no
+	symtab is around.
+	* src/abg-libxml-utils.cc (go_to_next_sibling_element_or_stay):
+	Fix typo in comment.
+	(advance_to_next_sibling_element): Don't crash when given a nil
+	node.
+	* tests/data/test-abidiff/test-PR27616-squished-v0.abi: Add new
+	test input.
+	* tests/data/test-abidiff/test-PR27616-squished-v1.abi: Likewise.
+	* tests/data/test-abidiff/test-PR27616-v0.xml: Likewise.
+	* tests/data/test-abidiff/test-PR27616-v1.xml: Likewise.
+	* tests/data/Makefile.am: Add the new test inputs above to source
+	distribution.
+	* tests/test-abidiff.cc (specs): Add the new tests inputs above to
+	this harness.
+	* tools/abilint.cc (main): Support writing corpus groups.
+
+2021-04-13  Dodji Seketeli <dodji@redhat.com>
+
+	dwarf-reader: properly set artificial-ness in opaque types
+	* src/abg-dwarf-reader.cc (get_opaque_version_of_type): Propagate
+	the artificial-ness of the original type here.
+	* tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Adjust.
+
+2021-04-12  Dodji Seketeli <dodji@redhat.com>
+
+	dwarf-reader: Canonicalize opaque enums and classes
+	* src/abg-dwarf-reader.cc (build_ir_node_from_die): Canonicalize
+	opaque enums and classes.
+	* tests/data/test-read-dwarf/PR27700/include-dir/priv.h: New test
+	header file.
+	* tests/data/test-read-dwarf/PR27700/include-dir/pub.h: Likewise
+	* tests/data/test-read-dwarf/PR27700/pub-incdir/inc.h: Likewise.
+	* tests/data/test-read-dwarf/PR27700/test-PR27700.o: New binary
+	input file.
+	* tests/data/test-read-dwarf/PR27700/test-PR27700.abi: Reference
+	abi file of the binary above.
+	* tests/data/test-read-dwarf/PR27700/test-PR27700.c: Source file
+	of the binary above.
+	* tests/data/Makefile.am: Add the test material above to source
+	distribution.
+	* tests/test-read-dwarf.cc (InOutSpec::in_public_headers_path):
+	Add new data member.
+	(in_out_specs): Adjust to reflect the new data member in the
+	InOutSpec type.  Add a new test input.
+	(set_suppressions_from_headers): Define new static function.
+	(test_task::perform): Use the content of the new
+	InOutSpec::in_public_headers_path to construct and add
+	"--headers-dir <headers-dir> --drop-private-types" to the options
+	of the abidw program run.
+
+2020-07-01  Matthias Maennich <maennich@google.com>
+
+	symtab: Add support for MODVERSIONS (CRC checksums)
+	* include/abg-ir.h (elf_symbol::elf_symbol): Add CRC parameter.
+	(elf_symbol::create): Likewise.
+	(elf_symbol::get_crc): New member method.
+	(elf_symbol::set_crc): New member method.
+	* src/abg-comp-filter.cc (crc_changed): New function.
+	(categorize_harmful_diff_node): Also test for CRC changes.
+	* src/abg-ir.cc (elf_symbol::priv::crc_): New data member.
+	* src/abg-ir.cc (elf_symbol::priv::priv): Add CRC parameter.
+	(elf_symbol::elf_symbol): Likewise.
+	(elf_symbol::create): Likewise.
+	(elf_symbol::textually_equals): Add CRC support.
+	(elf_symbol::get_crc): New member method.
+	(elf_symbol::set_crc): New member method.
+	* src/abg-reader.cc (build_elf_symbol): Add CRC support.
+	* src/abg-reporter-priv.cc (maybe_report_diff_for_symbol): Likewise.
+	* src/abg-symtab-reader.cc (symtab::load): Likewise.
+	* src/abg-writer.cc (write_elf_symbol): Likewise.
+	* tests/data/Makefile.am: Add new test data files.
+	* tests/data/test-abidiff-exit/test-crc-report.txt: New test file.
+	* tests/data/test-abidiff-exit/test-crc-v0.abi: Likewise.
+	* tests/data/test-abidiff-exit/test-crc-v1.abi: Likewise.
+	* tests/data/test-abidiff/empty-report.txt: New file.
+	* tests/data/test-abidiff/test-PR18166-libtirpc.so.report.txt: Deleted.
+	* tests/data/test-abidiff/test-PR24552-report0.txt: Deleted.
+	* tests/data/test-abidiff/test-crc-0.xml: New test file.
+	* tests/data/test-abidiff/test-crc-1.xml: Likewise.
+	* tests/data/test-abidiff/test-crc-2.xml: Likewise.
+	* tests/data/test-abidiff/test-crc-report.txt: Likewise.
+	* tests/data/test-abidiff/test-empty-corpus-report.txt: Deleted.
+	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Add CRC values.
+	* tests/data/test-read-write/test-crc.xml: New test data file.
+	* tests/data/test-symtab/kernel-modversions/Makefile: New test source.
+	* tests/data/test-symtab/kernel-modversions/one_of_each.c: Likewise.
+	* tests/data/test-symtab/kernel-modversions/one_of_each.ko: Likewise.
+	* tests/test-abidiff-exit.cc: Add new test case.
+	* tests/test-abidiff.cc: Add new test case.
+	* tests/test-read-write.cc: Likewise.
+	* tests/test-symtab.cc (Symtab::KernelSymtabsWithCRC): New test case.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-10-15  Giuliano Procida <gprocida@google.com>
+
+	abg-writer.cc: fix write_elf_symbol_reference loop
+	* src/abg-writer.cc (write_elf_symbol_reference): Check main
+	symbol and aliases with more care.
+	Fixes: commmit ("dwarf-reader/writer: consider aliases when dealing with suppressions")
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-06-28  Matthias Maennich <maennich@google.com>
+
+	dwarf-reader/writer: consider aliases when dealing with suppressions
+	* src/abg-dwarf-reader.cc(function_is_suppressed): Do not suppress
+	a function for which there is an alias that is not suppressed.
+	(variable_is_suppressed): Likewise for variables.
+	* src/abg-reader.cc (build_elf_symbol): Improve handling of
+	suppressed aliased symbols when reading from XML.
+	* src/abg-symtab-reader.cc (load): Likewise.
+	* src/abg-writer.cc(write_elf_symbol_reference): Fall back to
+	any aliased symbol if the main symbol is suppressed.
+	* tests/data/Makefile.am: Add new test files.
+	* tests/data/test-abidiff-exit/test-missing-alias-report.txt: New test file.
+	* tests/data/test-abidiff-exit/test-missing-alias.abi: Likewise.
+	* tests/data/test-abidiff-exit/test-missing-alias.suppr: Likewise.
+	* tests/test-abidiff-exit.cc: Add support for whitelists and add
+	new testcase.
+	* tests/data/test-read-dwarf/test-suppressed-alias.c: New test file.
+	* tests/data/test-read-dwarf/test-suppressed-alias.o: Likewise.
+	* tests/data/test-read-dwarf/test-suppressed-alias.o.abi: Likewise.
+	* tests/data/test-read-dwarf/test-suppressed-alias.suppr: Likewise.
+	* tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test3-alias-1.suppr: Likewise.
+	* tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test3-alias-2.suppr: Likewise.
+	* tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test3-alias-3.suppr: Likewise.
+	* tests/data/test-read-dwarf/test3-alias-4.so.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test3-alias-4.suppr: Likewise.
+	* tests/test-read-dwarf.cc: Add new test cases.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-06-30  Matthias Maennich <maennich@google.com>
+
+	symtab/dwarf-reader: allow hinting of main symbols for aliases
+	* include/abg-ir.h (elf_symbol::update_main_symbol): New method.
+	* include/abg-symtab-reader.h (symtab::update_main_symbol): New method.
+	* src/abg-dwarf-reader.cc
+	(build_var_decl): Hint symtab about main symbol discovered in DWARF.
+	(build_function_decl): Likewise.
+	* src/abg-ir.cc (elf_symbol::get_main_symbol): Lock the weak_ptr
+	on access in both overloads.
+	(update_main_symbol): New method to allow updating the main symbol.
+	* src/abg-symtab-reader.cc (symtab::update_main_symbol): New method.
+	* data/Makefile.am: Add new test data files.
+	* tests/data/test-annotate/test15-pr18892.so.abi: Updated test file.
+	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
+	* tests/data/test-annotate/test2.so.abi: Likewise.
+	* tests/data/test-annotate/test3.so.abi: Likewise.
+	* tests/data/test-diff-dwarf/test12-report.txt: Likewise.
+	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Likewise.
+	* tests/data/test-diff-suppr/test23-alias-filter-4.suppr: Likewise.
+	* tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Likewise.
+	* tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Likewise.
+	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
+	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test2.so.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test3.so.hash.abi: Likewise.
+	* tests/data/test-symtab/basic/aliases.c: New test source file.
+	* tests/data/test-symtab/basic/aliases.so: Likewise.
+	* tests/test-symtab.cc (Symtab::AliasedFunctionSymbols): New test case.
+	(Symtab::AliasedVariableSymbols): Likewise.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-06-29  Matthias Maennich <maennich@google.com>
+
+	test-symtab: add tests for whitelisted functions
+	* tests/data/Makefile.am: add new test files
+	* tests/data/test-symtab/basic/one_function_one_variable_all.whitelist: New test file,
+	* tests/data/test-symtab/basic/one_function_one_variable_function.whitelist: Likewise.
+	* tests/data/test-symtab/basic/one_function_one_variable_irrelevant.whitelist: Likewise.
+	* tests/data/test-symtab/basic/one_function_one_variable_variable.whitelist: Likewise.
+	* tests/test-symtab.cc (read_corpus): Add support for whitelists.
+	(assert_symbol_count): Likewise.
+	(Symtab::SymtabWithWhitelist): New testcase.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-06-02  Matthias Maennich <maennich@google.com>
+
+	dwarf reader: drop (now) unused code related to symbol table reading
+	* include/abg-dwarf-reader.h (set_ignore_symbol_table): Remove.
+	(get_ignore_symbol_table): Likewise.
+	* src/abg-dwarf-reader.cc (add_symbol_to_map): Likewise.
+	(read_context::options_type::ignore_symbol_table): Likewise.
+	(read_context::options_type): Adjust.
+	(read_context::fun_addr_sym_map_): Remove.
+	(read_context::fun_entry_addr_sym_map_): Likewise.
+	(read_context::fun_syms_): Likewise.
+	(read_context::var_addr_sym_map_): Likewise.
+	(read_context::var_syms_): Likewise.
+	(read_context::undefined_fun_syms_): Likewise.
+	(read_context::undefined_var_syms_): Likewise.
+	(read_context::initialize): Adjust.
+	(read_context::lookup_elf_symbol_from_index): Remove.
+	(read_context::fun_entry_addr_sym_map_sptr): Likewise.
+	(read_context::fun_entry_addr_sym_map): Likewise.
+	(read_context::fun_syms_sptr): Likewise.
+	(read_context::fun_syms): Likewise.
+	(read_context::var_syms_sptr): Likewise.
+	(read_context::var_syms): Likewise.
+	(read_context::undefined_fun_syms_sptr): Likewise.
+	(read_context::undefined_var_syms_sptr): Likewise.
+	(read_context::load_symbol_maps_from_symtab_section): Likewise.
+	(read_context::load_symbol_maps): Likewise.
+	(read_context::maybe_load_symbol_maps): Likewise.
+	(set_ignore_symbol_table): Likewise.
+	(get_ignore_symbol_table): Likewise.
+	(create_default_var_sym): Likewise.
+	(build_var_decl): Adjust.
+	(function_is_suppressed): Likewise.
+	(variable_is_suppressed): Likewise.
+	(build_function_decl): Likewise.
+	(add_symbol_to_map): Remove.
+	(read_corpus_from_elf): Adjust.
+	(build_corpus_group_from_kernel_dist_under): Likewise.
+	* tools/abidw.cc (main): Likewise.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-05-21  Matthias Maennich <maennich@google.com>
+
+	abg-corpus: remove symbol maps and their setters
+	* include/abg-corpus.h (corpus::set_fun_symbol_map): Remove
+	method declaration.
+	(corpus::set_undefined_fun_symbol_map): Likewise.
+	(corpus::set_var_symbol_map): Likewise.
+	(corpus::set_undefined_var_symbol_map): Likewise.
+	(corpus::get_fun_symbol_map_sptr): Likewise.
+	(corpus::get_undefined_fun_symbol_map_sptr): Likewise.
+	(corpus::get_var_symbol_map_sptr): Likewise.
+	(corpus::get_undefined_var_symbol_map_sptr): Likewise.
+	* src/abg-corpus-priv.h (corpus::priv::var_symbol_map): make
+	private and mutable
+	(corpus::priv::undefined_var_symbol_map): Likewise.
+	(corpus::priv::fun_symbol_map): Likewise.
+	(corpus::priv::undefined_fun_symbol_map): Likewise.
+	(corpus::priv::get_fun_symbol_map): New method declaration.
+	(corpus::priv::get_undefined_fun_symbol_map): Likewise.
+	(corpus::priv::get_var_symbol_map): Likewise.
+	(corpus::priv::get_undefined_var_symbol_map): Likewise.
+	* src/abg-corpus.cc (corpus::priv::get_fun_symbol_map): New
+	method implementation.
+	(corpus::priv::get_undefined_fun_symbol_map): Likewise.
+	(corpus::priv::get_var_symbol_map): Likewise.
+	(corpus::priv::get_undefined_var_symbol_map): Likewise.
+	(corpus::is_empty): depend on symtab only.
+	(corpus::set_fun_symbol_map): Remove method.
+	(corpus::set_undefined_fun_symbol_map): Likewise.
+	(corpus::set_var_symbol_map): Likewise.
+	(corpus::set_undefined_var_symbol_map): Likewise.
+	(corpus::get_fun_symbol_map_sptr): Likewise.
+	(corpus::get_undefined_fun_symbol_map_sptr): Likewise.
+	(corpus::get_var_symbol_map_sptr): Likewise.
+	(corpus::get_undefined_var_symbol_map_sptr): Likewise.
+	(corpus::get_fun_symbol_map): Use corpus::priv proxy method.
+	(corpus::get_undefined_fun_symbol_map): Likewise.
+	(corpus::get_var_symbol_map): Likewise.
+	(corpus::get_undefined_var_symbol_map): Likewise.
+	* src/abg-dwarf-reader.cc (read_debug_info_into_corpus): Do not
+	set corpus symbol maps anymore.
+	* src/abg-reader.cc (read_corpus_from_input): Likewise.
+	* tests/test-symtab.cc (assert_symbol_count): Do not access the
+	corpus symbol maps through sptr anymore.
+	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust
+	expected test output.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-05-14  Matthias Maennich <maennich@google.com>
+
+	symtab_reader: add support for ppc64 ELFv1 binaries
+	* src/abg-symtab-reader.cc (symtab::lookup_symbol): fall back to
+	lookup the address in entry_addr_symbol_map_.
+	(symtab::load): update the function entry address map for
+	ppc64 targets.
+	(symtab::update_function_entry_address_symbol_map): New
+	function implementation.
+	* src/abg-symtab-reader.h
+	(symtab::entry_addr_symbol_map_): New data member.
+	(symtab::update_function_entry_address_symbol_map): New
+	function declaration.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-05-12  Matthias Maennich <maennich@google.com>
+
+	abg-elf-helpers: migrate ppc64 specific helpers
+	* src/abg-dwarf-reader.cc (read_context::opd_section_): Delete.
+	(read_context::find_opd_section): Delete.
+	(read_context::read_uint64_from_array_of_bytes): Delete.
+	(read_context::read_int_from_array_of_bytes): Delete.
+	(read_context::lookup_ppc64_elf_fn_entry_point_address): Delete.
+	(read_context::address_is_in_opd_section): Delete.
+	(read_context::address_is_in_section): Delete.
+	(read_context::load_symbol_maps_from_symtab_section): Adjust.
+	* src/abg-elf-helpers.cc (read_int_from_array_of_bytes): New.
+	(read_uint64_from_array_of_bytes): New.
+	(lookup_ppc64_elf_fn_entry_point_address): New.
+	(address_is_in_section): New.
+	(address_is_in_opd_section): New.
+	* src/abg-elf-helpers.h
+	(lookup_ppc64_elf_fn_entry_point_address): New declaration.
+	(address_is_in_opd_section): New declaration.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-05-06  Matthias Maennich <maennich@google.com>
+
+	Switch kernel stuff over to new symtab and drop unused code
+	* src/abg-dwarf-reader.cc (read_context::ksymtab_format_): Delete.
+	(read_context::ksymtab_entry_size_): Likewise.
+	(read_context::nb_ksymtab_entries_): Likewise.
+	(read_context::nb_ksymtab_gpl_entries_): Likewise.
+	(read_context::ksymtab_section_): Likewise.
+	(read_context::ksymtab_reloc_section_): Likewise.
+	(read_context::ksymtab_gpl_section_): Likewise.
+	(read_context::ksymtab_gpl_reloc_section_): Likewise.
+	(read_context::ksymtab_strings_section_): Likewise.
+	(read_context::linux_exported_fn_syms): Likewise.
+	(read_context::linux_exported_var_syms): Likewise.
+	(read_context::linux_exported_gpl_fn_syms): Likewise.
+	(read_context::linux_exported_gpl_var_syms): Likewise.
+	(read_context::initialize): Remove initializations accordingly.
+	(read_context::find_ksymtab_section): Delete.
+	(read_context::find_ksymtab_gpl_section): Likewise.
+	(read_context::find_ksymtab_reloc_section): Likewise.
+	(read_context::find_ksymtab_gpl_reloc_section): Likewise.
+	(read_context::find_ksymtab_strings_section): Likewise.
+	(read_context::find_any_ksymtab_section): Likewise.
+	(read_context::find_any_ksymtab_reloc_section): Likewise.
+	(read_context::lookup_elf_symbol_from_index): Adjust.
+	(read_context::linux_exported_fn_syms): Delete.
+	(read_context::create_or_get_linux_exported_fn_syms): Likewise.
+	(read_context::linux_exported_var_syms): Likewise.
+	(read_context::create_or_get_linux_exported_var_syms): Likewise.
+	(read_context::linux_exported_gpl_fn_syms): Delete.
+	(read_context::create_or_get_linux_exported_gpl_fn_syms): Likewise.
+	(read_context::linux_exported_gpl_var_syms): Likewise.
+	(read_context::create_or_get_linux_exported_gpl_var_syms): Likewise.
+	(read_context::try_reading_first_ksymtab_entry): Likewise.
+	(read_context::try_reading_first_ksymtab_entry_using_pre_v4_19_format): Likewise.
+	(read_context::try_reading_first_ksymtab_entry_using_v4_19_format): Likewise.
+	(read_context::get_ksymtab_format_module): Likewise.
+	(read_context::get_ksymtab_format): Likewise.
+	(read_context::get_ksymtab_symbol_value_size): Likewise.
+	(read_context::get_ksymtab_entry_size): Likewise.
+	(read_context::get_nb_ksymtab_entries): Likewise.
+	(read_context::get_nb_ksymtab_gpl_entries): Likewise.
+	(read_context::populate_symbol_map_from_ksymtab): Likewise.
+	(read_context::populate_symbol_map_from_ksymtab_reloc): Likewise.
+	(read_context::load_kernel_symbol_table): Likewise.
+	(read_context::load_ksymtab_symbols): Likewise.
+	(read_context::load_ksymtab_gpl_symbols): Likewise.
+	(read_context::load_linux_specific_exported_symbol_maps): Likewise.
+	(read_context::load_symbol_maps): Do not load kernel symbol maps.
+	(read_context::maybe_adjust_sym_address_from_v4_19_ksymtab): Delete.
+	(read_context::add_fn_symbols_to_map): Likewise.
+	(read_context::add_var_symbols_to_map): Likewise.
+	(read_context::read_debug_info_into_corpus): Fill export maps
+	from new symtab.
+	(read_context::lookup_elf_fn_symbol_from_address): Delete.
+	(read_context::lookup_elf_var_symbol_from_address): Likewise.
+	(read_context::lookup_elf_symbol_from_address): Likewise.
+	(read_context::lookup_public_function_symbol_from_elf): Likewise.
+	(read_context::fun_entry_addr_sym_map_sptr): Likewise.
+	(read_context::fun_entry_addr_sym_map): Likewise.
+	(read_context::var_addr_sym_map): Likewise.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-05-06  Matthias Maennich <maennich@google.com>
+
+	dwarf-reader: read_context: use new symtab in *_symbols_is_exported
+	* src/abg-dwarf-reader.cc (function_symbol_is_exported): Use new
+	symtab implementation.
+	(variable_symbol_is_exported): Likewise.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-05-04  Matthias Maennich <maennich@google.com>
+
+	abg-reader: avoid using the (var|function)_symbol_map
+	* src/abg-reader.cc (build_elf_symbol_from_reference): drop
+	last parameter indicating the lookup type and use corpus
+	symtab for the lookup
+	(build_function_decl): Adjust accordingly.
+	(build_var_decl): Likewise.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-05-04  Matthias Maennich <maennich@google.com>
+
+	corpus: make get_unreferenced_(function|variable)_symbols use the new symtab
+	* src/abg-corpus-priv.h (corpus::priv::unrefed_var_symbols): make
+	private, mutable and optional.
+	(corpus::unrefed_fun_symbols): Likewise.
+	(corpus::priv::get_unreferenced_function_symbols): New method declaration.
+	(corpus::priv::get_unreferenced_variable_symbols): Likewise.
+	* src/abg-corpus.cc
+	(corpus::priv::build_unreferenced_symbols_tables): Delete method.
+	(corpus::priv::get_unreferenced_function_symbols): New method implementation.
+	(corpus::priv::get_unreferenced_variable_symbols): Likewise.
+	(corpus::get_unreferenced_function_symbols): Proxy call to corpus::priv.
+	(corpus::get_unreferenced_variable_symbols): Likewise.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-04-30  Matthias Maennich <maennich@google.com>
+
+	corpus: make get_(undefined_)?_(var|fun)_symbols use the new symtab
+	* src/abg-corpus-priv.h (corpus::priv::sorted_var_symbols): make
+	private, mutable and optional.
+	(corpus::sorted_undefined_var_symbols): Likewise.
+	(corpus::sorted_fun_symbols): Likewise.
+	(corpus::sorted_undefined_fun_symbols): Likewise.
+	(corpus::priv::get_sorted_fun_symbols): New method declaration.
+	(corpus::priv::get_sorted_undefined_fun_symbols): Likewise.
+	(corpus::priv::get_sorted_var_symbols): Likewise.
+	(corpus::priv::get_sorted_undefined_var_symbols): Likewise.
+	* src/abg-corpus.cc
+	(corpus::elf_symbol_comp_functor): Delete struct.
+	(corpus::priv::get_sorted_fun_symbols): New method implementation.
+	(corpus::priv::get_sorted_undefined_fun_symbols): Likewise.
+	(corpus::priv::get_sorted_var_symbols): Likewise.
+	(corpus::priv::get_sorted_undefined_var_symbols): Likewise.
+	(corpus::get_sorted_fun_symbols): Proxy call to corpus::priv.
+	(corpus::get_sorted_undefined_fun_symbols): Likewise.
+	(corpus::get_sorted_var_symbols): Likewise.
+	(corpus::get_sorted_undefined_var_symbols): Likewise.
+	* src/abg-writer.cc (write_elf_symbol_aliases): When emitting
+	aliases for a kernel symbol, ensure to only emit exported,
+	public aliases.
+	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: update test
+	data.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-05-19  Matthias Maennich <maennich@google.com>
+
+	Integrate new symtab reader into corpus and read_context
+	* include/abg-corpus.h (corpus::set_symtab): New method declaration.
+	(corpus::get_symtab): New method declaration.
+	* include/abg-fwd.h (symtab_reader::symtab_sptr): New forward
+	declaration.
+	* src/abg-corpus-priv.h (corpus::priv::symtab_): New data member.
+	* src/abg-corpus.cc
+	(corpus::set_symtab): Likewise.
+	(corpus::get_symtab): Likewise.
+	* src/abg-dwarf-reader.cc (read_context::symtab_): New data member.
+	(read_context::initialize): reset symtab_ as well
+	(read_context::symtab): new method that loads a symtab on
+	first access and returns it.
+	(read_debug_info_into_corpus): also set the new symtab object
+	on the current corpus.
+	(read_corpus_from_elf): Also determine (i.e. load) the new
+	symtab object and contribute to the load status.
+	* src/abg-reader.cc (read_corpus_from_input): also set the new
+	type symtab when reading from xml.
+	* tests/test-symtab.cc: Add test assertions.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2020-04-29  Matthias Maennich <maennich@google.com>
+
+	Refactor ELF symbol table reading by adding a new symtab reader
+	* src/abg-symtab-reader.h (symtab_filter): New class.
+	(symtab_iterator): Likewise.
+	(symtab): Likewise.
+	(filtered_symtab): Likewise.
+	* src/abg-symtab-reader.cc (symtab_filter::matches): New.
+	(symtab::make_filter): Likewise.
+	(symtab::lookup_symbol): Likewise.
+	(symbol_sort): Likewise.
+	(symtab::load): Likewise.
+	(symtab::load_): Likewise.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+	Reviewed-by: Dodji Seketeli <dodji@seketeli.org>
+
+2021-03-29  Matthias Maennich <maennich@google.com>
+
+	clang-format: Minor correction to not break parameters on the first line
+	* .clang-format: correct function parameter break/indentation
+
+2021-03-31  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27598 - abidiff mishandles union member functions
+	* src/abg-default-reporter.cc (default_reporter::report): Assume
+	the parent type of the method can be either a class or a union.
+	* tests/data/test-diff-filter/test-PR27598-report-0.txt: New
+	reference output for the test.
+	* tests/data/test-diff-filter/test-PR27598-v{0,1}.cc: New source
+	code for the input binaries below.
+	* tests/data/test-diff-filter/test-PR27598-v{0,1}.o: New input
+	test binaries.
+	* tests/data/Makefile.am: Add the new test material to source
+	distribution.
+	* tests/test-diff-filter.cc (in_out_specs): Add the test inputs
+	above to this test harness.
+
+2021-03-25  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27569 - abidiff misses a function parameter addition
+	* include/abg-comparison.h (enum diff_category): Add a new
+	FN_PARM_ADD_REMOVE_CHANGE_CATEGORY enumerator and adjust the
+	following enumerator values.  Update the EVERYTHING_CATEGORY
+	accordingly.
+	(function_type_diff::{sorted_deleted_parms, sorted_added_parms}):
+	Add new member functions.
+	* src/abg-comparison.cc
+	(function_type_diff::{sorted_deleted_parms, sorted_added_parms}):
+	Define new accessors.
+	(get_default_harmful_categories_bitmap):
+	Consider changes of the category
+	FN_PARM_ADD_REMOVE_CHANGE_CATEGORY as harmful.
+	(operator<<(ostream& o, diff_category c)): Support the new
+	FN_PARM_ADD_REMOVE_CHANGE_CATEGORY while serializing a category
+	bitmap.
+	* src/abg-comp-filter.cc
+	(has_added_or_removed_function_parameters): Define new static
+	function.
+	(categorize_harmful_diff_node): Categorize diff nodes representing
+	function parameter addition or removal as
+	FN_PARM_ADD_REMOVE_CHANGE_CATEGORY.
+	* tests/data/test-diff-filter/test-PR27569-report-0.txt: New test
+	reference output.
+	* tests/data/test-diff-filter/test-PR27569-v{0,1}.abi: New test inputs.
+	* tests/data/Makefile.am: Add the new test inputs to the source
+	distribution.
+	* tests/test-diff-filter.cc (in_out_specs): Add the new test
+	inputs to this test harness.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
+	Adjust.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
+	Likewise.
+	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt:
+	Likewise.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
+	Likewise.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
+	Likewise.
+
+2021-03-15  Giuliano Procida <gprocida@google.com>
+
+	dwarf-reader: Treat union members as public by default.
+	* src/abg-dwarf-reader.cc (add_or_update_union_type): Replace
+	"class" with "union" in comments; give union members public
+	access by default.
+	(finish_member_function_reading): Give union members public access
+	by default.
+	(maybe_set_member_type_access_specifier): Give union members
+	public access by default.
+	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Refresh.
+	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Refresh.
+	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
+	Refresh.
+	* tests/data/test-annotate/test13-pr18894.so.abi: Refresh.
+	* tests/data/test-annotate/test14-pr18893.so.abi: Refresh.
+	* tests/data/test-annotate/test15-pr18892.so.abi: Refresh.
+	* tests/data/test-annotate/test17-pr19027.so.abi: Refresh.
+	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+	Refresh.
+	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Refresh.
+	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+	Refresh.
+	* tests/data/test-annotate/test21-pr19092.so.abi: Refresh.
+	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
+	Refresh.
+	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
+	Refresh.
+	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
+	Refresh.
+	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Refresh.
+	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
+	Refresh.
+	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi:
+	Refresh.
+	* tests/data/test-read-dwarf/test-PR26568-1.o.abi: Refresh.
+	* tests/data/test-read-dwarf/test-PR26568-2.o.abi: Refresh.
+	* tests/data/test-read-dwarf/test-libandroid.so.abi: Refresh.
+	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi:
+	Refresh.
+	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Refresh.
+	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Refresh.
+	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Refresh.
+	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Refresh.
+	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Refresh.
+	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Refresh.
+	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Refresh.
+	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+	Refresh.
+	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Refresh.
+	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+	Refresh.
+	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Refresh.
+	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+	Refresh.
+	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi:
+	Refresh.
+
+2021-03-12  Ben Woodard via Libabigail <libabigail@sourceware.org>
+
+	Bug 27512 - Remove broken zip-archive support
+	* configure.ac: remove --enable-zip-archive option and logic
+	associated with it.
+	* include/abg-libzip-utils.h: Remove.
+	* src/abg-libzip-utils.cc: Likewise.
+	* include/Makefile.am: remove reference to include/abg-libzip-utils.h
+	that no longer exists.
+	* src/Makefile.am: remove reference to src/abg-libzip-utils.cc that no
+	longer exists.
+	* relicensing-scripts/file-licenses.orig.txt: remove references to
+	files that no longer exist.
+	* relicensing-scripts/files-with-lgplv3.txt: remove references to
+	files that no longer exist.
+	* tests/test-write-read-archive.cc: Remove because it tests code
+	that no longer exists.
+	* tests/Makefile.am: remove reference to tests that no longer exist.
+	* include/abg-reader.h: remove conditionally compiled code for zip
+	archives.
+	* include/abg-tools-utils.h: remove conditionally compiled code for
+	zip archives.
+	* src/abg-corpus.cc: remove conditionally compiled code for zip
+	archives.
+	* src/abg-reader.cc: remove conditionally compiled code for zip
+	archives.
+	* src/abg-tools-utils.cc: remove conditionally compiled code for zip
+	archives.
+	* src/abg-writer.cc: remove conditionally compiled code for zip
+	archives.
+	* tools/abidiff.cc: remove conditionally compiled code for zip
+	archives.
+	* tools/abilint.cc: remove conditionally compiled code for zip
+	archives.
+	* tools/abiar.c: Remove.
+	* tools/Makefile.am: remove references to abiar a utility that no
+	longer has a reason for existing.
+
+2021-03-18  Dodji Seketeli <dodji@redhat.com>
+
+	dwarf-reader: Support more DWARF-5 type DIEs
+	* src/abg-dwarf-reader.cc (is_type_tag): Support
+	DW_TAG_coarray_type, DW_TAG_atomic_type and DW_TAG_immutable_type.
+	* tests/data/test-diff-pkg/elfutils-debuginfo-0.183-1.el9.x86_64.rpm:
+	Add new binary test input.
+	* tests/data/test-diff-pkg/elfutils-libs-debuginfo-0.183-1.el9.x86_64.rpm: Likewise.
+	* tests/data/test-diff-pkg/elfutils-libs-0.183-1.el9.x86_64.rpm: Likewise.
+	* tests/data/test-diff-pkg/elfutils-libs-debuginfo-0.183-1.el9.x86_64-self-check-report-0.txt:
+	Add new reference test output.
+	* tests/test-diff-pkg.cc (in_out_specs): Add the test inputs above
+	to the harness.
+
+2021-03-10  Giuliano Procida <gprocida@google.com>
+
+	DWARF reader: Comment ARM32 ELF address interpretation
+	* src/abg-dwarf-reader.cc
+	(read_context::load_symbol_maps_from_symtab_section): Add
+	descriptive comment to ARM32 address handling; shorten
+	the assignment using &=.
+
+2021-01-27  Matthias Maennich <maennich@google.com>
+
+	dwarf-reader split: create abg-symtab-reader.{h,cc} and test case
+	* src/abg-symtab-reader.h: New header file.
+	* src/abg-symtab-reader.cc: New source file.
+	* src/Makefile.am: Add new source files.
+	* tests/Makefile.am: Add new test case runtestsymtabreader.
+	* tests/test-symtab-reader.cc: New test source file.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+
+2021-03-09  Giuliano Procida <gprocida@google.com>
+
+	DWARF reader: Interpret ARM32 ELF addresses correctly
+	* src/abg-dwarf-reader.cc
+	(read_context::load_symbol_maps_from_symtab_section): Clear
+	bit zero of ARM32 function addresses.
+	* src/abg-elf-helpers.cc (architecture_is_arm32): Add new
+	function.
+	* src/abg-elf-helpers.h (architecture_is_arm32): Likewise.
+	* tests/data/test-read-dwarf/test-libandroid.so.abi: Update.
+
+2021-01-27  Matthias Maennich <maennich@google.com>
+
+	abg-ir: elf_symbol: add is_suppressed field
+	* include/abg-ir.h (elf_symbol::elf_symbol): Add is_suppressed
+	parameter.
+	(elf_symbol::create): Likewise.
+	(elf_symbol::is_suppressed): New getter declaration.
+	(elf_symbol::set_is_suppressed): New setter declaration.
+	* src/abg-ir.cc (elf_symbol::priv::priv): Add is_suppressed
+	parameter.
+	(elf_symbol::priv::is_suppressed_): New field.
+	(elf_symbol::elf_symbol): Add is_suppressed parameter.
+	(elf_symbol::create): Likewise.
+	(elf_symbol::is_suppressed): New getter implementation.
+	(elf_symbol::set_is_suppressed): New setter implementation.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+
+2021-01-27  Matthias Maennich <maennich@google.com>
+
+	abg-ir: elf_symbol: add is_in_ksymtab field
+	* include/abg-ir.h (elf_symbol::elf_symbol): Add is_in_ksymtab
+	parameter.
+	(elf_symbol::create): Likewise.
+	(elf_symbol::is_in_ksymtab): New getter declaration.
+	(elf_symbol::set_is_in_ksymtab): New setter declaration.
+	* src/abg-ir.cc (elf_symbol::priv::priv): Add is_in_ksymtab
+	parameter.
+	(elf_symbol::priv::is_in_ksymtab_): New field.
+	(elf_symbol::elf_symbol): Add is_in_ksymtab parameter.
+	(elf_symbol::create): Likewise.
+	(elf_symbol::is_in_ksymtab): New getter implementation.
+	(elf_symbol::set_is_in_ksymtab): New setter implementation.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+
+2021-01-27  Matthias Maennich <maennich@google.com>
+
+	abg-cxx-compat: add simplified version of std::optional
+	* include/abg-cxx-compat.h (abg_compat::optional): Add new class.
+	* tests/tests-cxx-compat.cc: Add new test cases.
+	Reviewed-by: Giuliano Procida <gprocida@google.com>
+
+2021-03-02  Ben Woodard via Libabigail <libabigail@sourceware.org>
+
+	Fix declaratons of conditionally defined functions
+	* include/abg-reader.h (read_corpus_from_file): Guard the
+	declaration of these overloads with #ifdef WITH_ZIP_ARCHIVE.
+	* tools/abilint.cc: Guard the use of
+	abigail::xml_reader::read_corpus_from_file with #ifdef
+	WITH_ZIP_ARCHIVE.
+
+2021-03-08  Dodji Seketeli <dodji@redhat.com>
+
+	Revert "Fix declaratons of conditionally defined functions"
+	* include/abg-reader.h:
+	* tools/abilint.cc:
+
+2021-03-02  Ben Woodard via Libabigail <libabigail@sourceware.org>
+
+	Fix declaratons of conditionally defined functions
+	* include/abg-reader.h:
+	* tools/abilint.cc:
+
+2021-03-08  Dodji Seketeli <dodji@redhat.com>
+
+	tests/catch.hpp: Add SPDX header back
+	* tests/lib/catch.hpp: Add SPDX header back.
+
+2021-02-25  Dodji Seketeli <dodji@redhat.com>
+
+	dwarf-reader: Keep stable order when de-duplicating class definitions
+	* src/abg-dwarf-reader.cc
+	(read_context::resolve_declaration_only_classes): Compare the
+	classes that have the same name across several TU, always in the
+	same order.
+	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
+
+2021-02-24  Dodji Seketeli <dodji@redhat.com>
+
+	Better sorting of (anonymous) types in ABIXML files
+	* src/abg-writer.cc (type_ptr_cmp::operator()): Use the internal
+	pretty representation of types, for comparison.
+	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
+	Adjust.
+	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
+	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
+	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
+	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
+	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
+	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
+	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+	Likewise.
+	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Likewise.
+	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+	Likewise.
+	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
+
+2021-02-23  Dodji Seketeli <dodji@redhat.com>
+
+	tests: Update to catch.hpp v2.13.4 and fix #2178
+	* tests/lib/catch.hpp: Update to v2.13.4 and initialize
+	sigStackSize to 32768 for now, as suggested by
+	https://github.com/catchorg/Catch2/issues/2178.
+
+2021-02-11  Dodji Seketeli <dodji@redhat.com>
+
+	Don't consider type name when comparing typedefs
+	* include/abg-ir.h (maybe_compare_as_member_decls): Declare new
+	function.  Make it a friend of class decl_base.
+	* src/abg-dwarf-reader.cc (maybe_canonicalize_type): Don't early
+	canonicalize typedefs because they can be "part" of a type that is
+	not yet completed, especially considering that class declaration
+	resolution is part of type building, stricto sensu.
+	* src/abg-ir.cc (maybe_compare_as_member_decls): Factorize this
+	out of ...
+	(equals): ... the overload for decl_base.  Use it in the overload
+	for typedef_decl.
+	* tests/data/test-diff-pkg/nmap-7.70-5.el8_testjcc.x86_64-self-check-report-0.txt:
+	New test reference output.
+	* tests/data/test-diff-pkg/nmap-7.70-5.el8_testjcc.x86_64.rpm: New
+	binary input.
+	* tests/data/test-diff-pkg/nmap-debuginfo-7.70-5.el8_testjcc.x86_64.rpm: Likewise.
+	* tests/data/Makefile.am: Add these new testing material to source
+	distribution.
+	* tests/test-diff-pkg.cc (in_out_specs): Add the new test input to
+	the harness.
+	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt:
+	Adjust.
+	* tests/data/test-diff-suppr/test39-opaque-type-report-0.txt:
+	Adjust.
+
+2021-02-10  Dodji Seketeli <dodji@redhat.com>
+
+	Use generic internal type name to canonicalize anonymous enums
+	* src/abg-ir.cc (has_generic_anonymous_internal_type_name) :
+	Define new static function.
+	(get_generic_anonymous_internal_type_name): Use it here.
+	(decl_base::get_pretty_representation): For internal purposes,
+	build an anonymous name that is stable.
+	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
+	* tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Adjust.
+	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: Adjust.
+	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test-libandroid.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
+
+2021-02-08  Giuliano Procida <gprocida@google.com>
+
+	abg-dwarf-reader: Fix typo in compare_dies_string_attribute_value
+	* src/abg-dwarf-reader.cc
+	(compare_dies_string_attribute_value): Typo fix.
+
+2021-01-27  Giuliano Procida <gprocida@google.com>
+
+	abidiff: do not qualify member names in diff report
+	* src/abg-reporter-priv.cc (represent_data_member): Do not
+	qualify member names. (represent): Do not qualify member names.
+	* tests/data/test-abicompat/test0-fn-changed-report-0.txt: Refresh.
+	* tests/data/test-abicompat/test0-fn-changed-report-2.txt: Refresh.
+	* tests/data/test-abicompat/test5-fn-changed-report-0.txt: Refresh.
+	* tests/data/test-abicompat/test5-fn-changed-report-1.txt: Refresh.
+	* tests/data/test-abicompat/test6-var-changed-report-0.txt: Refresh.
+	* tests/data/test-abicompat/test6-var-changed-report-1.txt: Refresh.
+	* tests/data/test-abicompat/test7-fn-changed-report-0.txt: Refresh.
+	* tests/data/test-abicompat/test7-fn-changed-report-1.txt: Refresh.
+	* tests/data/test-abicompat/test7-fn-changed-report-2.txt: Refresh.
+	* tests/data/test-abicompat/test8-fn-changed-report-0.txt: Refresh.
+	* tests/data/test-abicompat/test9-fn-changed-report-0.txt: Refresh.
+	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt:
+	Refresh.
+	* tests/data/test-abidiff-exit/test-fun-param-report.txt: Refresh.
+	* tests/data/test-abidiff-exit/test-headers-dirs/test-headers-dir-report-2.txt:
+	Refresh.
+	* tests/data/test-abidiff-exit/test-leaf-cxx-members-report.txt:
+	Refresh.
+	* tests/data/test-abidiff-exit/test-leaf-peeling-report.txt: Refresh.
+	* tests/data/test-abidiff-exit/test-leaf-redundant-report.txt: Refresh.
+	* tests/data/test-abidiff-exit/test-member-size-report0.txt: Refresh.
+	* tests/data/test-abidiff-exit/test-member-size-report1.txt: Refresh.
+	* tests/data/test-abidiff-exit/test-net-change-report0.txt: Refresh.
+	* tests/data/test-abidiff/test-PR18791-report0.txt: Refresh.
+	* tests/data/test-abidiff/test-qual-type0-report.txt: Refresh.
+	* tests/data/test-abidiff/test-struct0-report.txt: Refresh.
+	* tests/data/test-abidiff/test-struct1-report.txt: Refresh.
+	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-dwarf/test0-report.txt: Refresh.
+	* tests/data/test-diff-dwarf/test1-report.txt: Refresh.
+	* tests/data/test-diff-dwarf/test10-report.txt: Refresh.
+	* tests/data/test-diff-dwarf/test11-report.txt: Refresh.
+	* tests/data/test-diff-dwarf/test13-report.txt: Refresh.
+	* tests/data/test-diff-dwarf/test21-redundant-fn-report-0.txt: Refresh.
+	* tests/data/test-diff-dwarf/test27-local-base-diff-report.txt:
+	Refresh.
+	* tests/data/test-diff-dwarf/test3-report.txt: Refresh.
+	* tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-dwarf/test36-ppc64-aliases-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-dwarf/test37-union-report-0.txt: Refresh.
+	* tests/data/test-diff-dwarf/test38-union-report-0.txt: Refresh.
+	* tests/data/test-diff-dwarf/test39-union-report-0.txt: Refresh.
+	* tests/data/test-diff-dwarf/test4-report.txt: Refresh.
+	* tests/data/test-diff-dwarf/test40-report-0.txt: Refresh.
+	* tests/data/test-diff-dwarf/test44-anon-struct-union-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-dwarf/test45-anon-dm-change-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-dwarf/test46-rust-report-0.txt: Refresh.
+	* tests/data/test-diff-dwarf/test5-report.txt: Refresh.
+	* tests/data/test-diff-dwarf/test8-report.txt: Refresh.
+	* tests/data/test-diff-filter/libtest45-basic-type-change-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test-PR26739-2-report-0.txt: Refresh.
+	* tests/data/test-diff-filter/test0-report.txt: Refresh.
+	* tests/data/test-diff-filter/test01-report.txt: Refresh.
+	* tests/data/test-diff-filter/test1-report.txt: Refresh.
+	* tests/data/test-diff-filter/test10-report.txt: Refresh.
+	* tests/data/test-diff-filter/test11-report.txt: Refresh.
+	* tests/data/test-diff-filter/test13-report.txt: Refresh.
+	* tests/data/test-diff-filter/test14-0-report.txt: Refresh.
+	* tests/data/test-diff-filter/test14-1-report.txt: Refresh.
+	* tests/data/test-diff-filter/test15-0-report.txt: Refresh.
+	* tests/data/test-diff-filter/test15-1-report.txt: Refresh.
+	* tests/data/test-diff-filter/test16-report-2.txt: Refresh.
+	* tests/data/test-diff-filter/test16-report.txt: Refresh.
+	* tests/data/test-diff-filter/test17-0-report.txt: Refresh.
+	* tests/data/test-diff-filter/test17-1-report.txt: Refresh.
+	* tests/data/test-diff-filter/test18-report.txt: Refresh.
+	* tests/data/test-diff-filter/test2-report.txt: Refresh.
+	* tests/data/test-diff-filter/test25-cyclic-type-report-0.txt: Refresh.
+	* tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Refresh.
+	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test26-qualified-redundant-node-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-2.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test29-finer-redundancy-marking-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test3-report.txt: Refresh.
+	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test36-report-0.txt: Refresh.
+	* tests/data/test-diff-filter/test37-report-0.txt: Refresh.
+	* tests/data/test-diff-filter/test39/test39-report-0.txt: Refresh.
+	* tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Refresh.
+	* tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test44-anonymous-data-member-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-filter/test9-report.txt: Refresh.
+	* tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64--2.24.2-30.fc30.x86_64-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Refresh.
+	* tests/data/test-diff-pkg/dirpkg-1-report-1.txt: Refresh.
+	* tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Refresh.
+	* tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Refresh.
+	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
+	Refresh.
+	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
+	Refresh.
+	* tests/data/test-diff-pkg/symlink-dir-test1-report0.txt: Refresh.
+	* tests/data/test-diff-pkg/tarpkg-0-report-0.txt: Refresh.
+	* tests/data/test-diff-pkg/tarpkg-1-report-0.txt: Refresh.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/libtest48-soname-abixml-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Refresh.
+	* tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Refresh.
+	* tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Refresh.
+	* tests/data/test-diff-suppr/test1-typedef-suppr-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Refresh.
+	* tests/data/test-diff-suppr/test11-add-data-member-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test12-add-data-member-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test12-add-data-member-report-2.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test13-suppr-through-pointer-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test15-suppr-added-fn-report-5.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test16-suppr-removed-fn-report-5.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test17-suppr-added-var-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test17-suppr-added-var-report-5.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-2.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test18-suppr-removed-var-report-5.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test23-alias-filter-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test23-alias-filter-report-2.txt: Refresh.
+	* tests/data/test-diff-suppr/test24-soname-report-1.txt: Refresh.
+	* tests/data/test-diff-suppr/test24-soname-report-10.txt: Refresh.
+	* tests/data/test-diff-suppr/test24-soname-report-12.txt: Refresh.
+	* tests/data/test-diff-suppr/test24-soname-report-14.txt: Refresh.
+	* tests/data/test-diff-suppr/test24-soname-report-16.txt: Refresh.
+	* tests/data/test-diff-suppr/test24-soname-report-4.txt: Refresh.
+	* tests/data/test-diff-suppr/test25-typedef-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test26-loc-suppr-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test26-loc-suppr-report-3.txt: Refresh.
+	* tests/data/test-diff-suppr/test29-soname-report-3.txt: Refresh.
+	* tests/data/test-diff-suppr/test29-soname-report-6.txt: Refresh.
+	* tests/data/test-diff-suppr/test29-soname-report-8.txt: Refresh.
+	* tests/data/test-diff-suppr/test3-struct-suppr-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test3-struct-suppr-report-1.txt: Refresh.
+	* tests/data/test-diff-suppr/test3-struct-suppr-report-2.txt: Refresh.
+	* tests/data/test-diff-suppr/test30-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test31-report-1.txt: Refresh.
+	* tests/data/test-diff-suppr/test33-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test35-leaf-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test36-leaf-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test4-local-suppr-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test4-local-suppr-report-1.txt: Refresh.
+	* tests/data/test-diff-suppr/test42-negative-suppr-type-report-0.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test42-negative-suppr-type-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test46-PR25128-report-1.txt: Refresh.
+	* tests/data/test-diff-suppr/test46-PR25128-report-2.txt: Refresh.
+	* tests/data/test-diff-suppr/test47-non-reachable-types-report-1.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test47-non-reachable-types-report-2.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test47-non-reachable-types-report-4.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test47-non-reachable-types-report-7.txt:
+	Refresh.
+	* tests/data/test-diff-suppr/test5-fn-suppr-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Refresh.
+	* tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Refresh.
+	* tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Refresh.
+	* tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Refresh.
+	* tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Refresh.
+	* tests/data/test-diff-suppr/test6-fn-suppr-report-0-1.txt: Refresh.
+	* tests/data/test-diff-suppr/test6-fn-suppr-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test6-fn-suppr-report-1.txt: Refresh.
+	* tests/data/test-diff-suppr/test6-fn-suppr-report-2.txt: Refresh.
+	* tests/data/test-diff-suppr/test6-fn-suppr-report-3.txt: Refresh.
+	* tests/data/test-diff-suppr/test6-fn-suppr-report-4.txt: Refresh.
+	* tests/data/test-diff-suppr/test7-var-suppr-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Refresh.
+	* tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Refresh.
+	* tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Refresh.
+	* tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Refresh.
+	* tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Refresh.
+	* tests/data/test-diff-suppr/test7-var-suppr-report-8.txt: Refresh.
+	* tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Refresh.
+	* tests/data/test-diff-suppr/test8-redundant-fn-report-1.txt: Refresh.
+
+2021-02-08  Dodji Seketeli <dodji@redhat.com>
+
+	dwarf-reader: Use DW_FORM_line_strp only if it's present
+	* configure.ac: Define if HAS_DW_FORM_line_strp if the
+	DW_FORM_line_strp enumerator is present.
+	* src/abg-dwarf-reader.cc (form_is_DW_FORM_line_strp): Define new
+	static function.
+	(compare_dies_string_attribute_value): Use it.
+
+2021-02-04  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27267 - Better support for opaque enum types
+	* src/abg-dwarf-reader.cc (get_opaque_version_of_type): Do not
+	quit early for enum types, because the code that comes a bit later
+	can handle enums.  Add the newly built enum to its scope for
+	proper life cycle management.
+	* tests/data/test-diff-suppr/PR27267/include-dir-v{0,1}/include.h: New
+	include files for the input test library.
+	* tests/data/test-diff-suppr/PR27267/libtestpr27267-v{0,1}.so: New
+	input test library.
+	* tests/data/test-diff-suppr/PR27267/report-1.txt: New reference
+	output for the comparison.
+	* tests/data/test-diff-suppr/PR27267/v{0,1}.c: Source code for the
+	new input test library.
+	* tests/data/Makefile.am: Add the new test material above to
+	source distribution.
+	* tests/test-diff-suppr.cc (in_out_specs): Add the new test input
+	above to the test harness.
+
+2021-02-03  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27331 - Data member offset change not considered local
+	* src/abg-ir.cc (equals): In the overload of class_or_union, when
+	a data member changes without having its type change, then
+	consider the data change as being local.
+	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt:
+	Adjust.
+	* tests/data/test-diff-filter/test-PR27331-report-0.txt: New
+	reference output.
+	* tests/data/test-diff-filter/test-PR27331-v{0,1}.c: New test
+	source files.
+	* tests/data/test-diff-filter/test-PR27331-v{0,1}.o: New test
+	binary inputs.
+	* tests/data/Makefile.am: Add these new test material to source
+	distribution.
+	* tests/test-diff-filter.cc (in_out_specs): Add the tests above to
+	the harness.
+
+2021-02-02  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27165 - Better support multi-language binaries
+	* src/abg-dwarf-reader.cc (get_scope_for_die): Get the language of
+	the DIE from the compilation unit of the DIE itself.
+	* tests/data/test-types-stability/PR27165-libzmq.so.5.2.3: New
+	test input.
+	* tests/data/test-types-stability/PR27165-libzmq.so.5.2.3.debug:
+	Debug information for the new test input.
+	* tests/data/Makefile.am: Add the test inputs above to the source
+	distribution.
+	* tests/test-types-stability.cc (elf_paths): Add the new test
+	inputs to this test harness.
+
+2020-10-22  Dodji Seketeli <dodji@redhat.com>
+
+	Bump ABIXML format version to 2.0
+	* include/abg-corpus.h (corpus::init_format_version): Declare new
+	private method.
+	(corpus::set_environment): Make this non-const.
+	(corpus::{get,set}_format_{major,minor}_version_number): Declare
+	new accessors.
+	* src/abg-corpus.cc (corpus::init_format_version): Define new
+	method.
+	(corpus::set_environment): By default, initialize the format
+	version number of the corpus to the one supported by Libabigail.
+	(corpus::{get,set}_format_{major,minor}_version_number): Define
+	new accessors.
+	* include/abg-ir.h: Include abg-config.h to use the
+	abigail::config.
+	(environment::get_config): Declare new accessor.
+	* src/abg-ir.cc (environment::priv::config_): Add new data member.
+	(environment::get_config): Define new accessor.
+	* src/abg-config.cc (config::config): Bump the format
+	version number to "2.0".
+	* src/abg-corpus-priv.h
+	(corpus::priv::format_{major,minor}_version_number_): Add new data members.
+	* src/abg-reader.cc (handle_version_attribute): Define new static
+	function.
+	(read_corpus_from_input, read_corpus_group_from_input): Use it to
+	read the value of the "version" attribute and set the format
+	version number of the corpus and corpus group accordingly.
+	* src/abg-writer.cc (write_context::m_config): Remove the config
+	object because we can now get it from the environment.
+	(write_context::get_config): Get the config object from the
+	environment.
+	(write_translation_unit): Do not emit the version attribute on the
+	translation unit element anymore.
+	(write_version_info): Define static function.
+	(write_corpus, write_corpus_group): Use it to emit version
+	attribute on both the corpus and corpus group elements.
+	* tools/abidiff.cc
+	(emit_incomptatible_format_version_error_message): Define new
+	static function.
+	(main): Ensure that corpora and corpus groups being compared have
+	the same major version number.
+	* tests/update-test-output.py: Adjust syntax for python3.
+	* tests/data/test-annotate/libtest23.so.abi: Adjust.
+	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
+	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
+	* tests/data/test-annotate/test-anonymous-members-0.o.abi:
+	Likewise.
+	* tests/data/test-annotate/test0.abi: Likewise.
+	* tests/data/test-annotate/test1.abi: Likewise.
+	* tests/data/test-annotate/test13-pr18894.so.abi: Likewise.
+	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
+	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
+	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
+	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+	Likewise.
+	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Likewise.
+	* tests/data/test-annotate/test2.so.abi: Likewise.
+	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+	Likewise.
+	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
+	* tests/data/test-annotate/test3.so.abi: Likewise.
+	* tests/data/test-annotate/test4.so.abi: Likewise.
+	* tests/data/test-annotate/test5.o.abi: Likewise.
+	* tests/data/test-annotate/test6.so.abi: Likewise.
+	* tests/data/test-annotate/test7.so.abi: Likewise.
+	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi:
+	Likewise.
+	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
+	Likewise.
+	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt:
+	Likewise.
+	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
+	Likewise.
+	* tests/data/test-diff-suppr/libtest48-soname-abixml-v0.so.abi:
+	Likewise.
+	* tests/data/test-diff-suppr/libtest48-soname-abixml-v1.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/PR24378-fn-is-not-scope.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise.
+	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/PR26261/PR26261-exe.abi: Likewise.
+	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
+	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test-PR26568-1.o.abi: Likewise.
+	* tests/data/test-read-dwarf/test-PR26568-2.o.abi: Likewise.
+	* tests/data/test-read-dwarf/test0.abi: Likewise.
+	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test1.abi: Likewise.
+	* tests/data/test-read-dwarf/test1.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test2.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test2.so.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test3.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test3.so.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test4.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test4.so.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test5.o.abi: Likewise.
+	* tests/data/test-read-dwarf/test5.o.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test6.so.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test7.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test7.so.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi:
+	Likewise.
+	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
+	* tests/data/test-read-write/test0.xml: Likewise.
+	* tests/data/test-read-write/test1.xml: Likewise.
+	* tests/data/test-read-write/test10.xml: Likewise.
+	* tests/data/test-read-write/test11.xml: Likewise.
+	* tests/data/test-read-write/test12.xml: Likewise.
+	* tests/data/test-read-write/test13.xml: Likewise.
+	* tests/data/test-read-write/test14.xml: Likewise.
+	* tests/data/test-read-write/test15.xml: Likewise.
+	* tests/data/test-read-write/test16.xml: Likewise.
+	* tests/data/test-read-write/test17.xml: Likewise.
+	* tests/data/test-read-write/test18.xml: Likewise.
+	* tests/data/test-read-write/test19.xml: Likewise.
+	* tests/data/test-read-write/test2.xml: Likewise.
+	* tests/data/test-read-write/test20.xml: Likewise.
+	* tests/data/test-read-write/test21.xml: Likewise.
+	* tests/data/test-read-write/test22.xml: Likewise.
+	* tests/data/test-read-write/test23.xml: Likewise.
+	* tests/data/test-read-write/test24.xml: Likewise.
+	* tests/data/test-read-write/test25.xml: Likewise.
+	* tests/data/test-read-write/test26.xml: Likewise.
+	* tests/data/test-read-write/test27.xml: Likewise.
+	* tests/data/test-read-write/test28-without-std-fns-ref.xml:
+	Likewise.
+	* tests/data/test-read-write/test28-without-std-vars-ref.xml:
+	Likewise.
+	* tests/data/test-read-write/test3.xml: Likewise.
+	* tests/data/test-read-write/test4.xml: Likewise.
+	* tests/data/test-read-write/test5.xml: Likewise.
+	* tests/data/test-read-write/test6.xml: Likewise.
+	* tests/data/test-read-write/test7.xml: Likewise.
+	* tests/data/test-read-write/test8.xml: Likewise.
+	* tests/data/test-read-write/test9.xml: Likewise.
+
+2020-10-20  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 26684 - Support DW_AT_data_bit_offset attribute
+	* src/abg-dwarf-reader.cc (read_and_convert_DW_at_bit_offset):
+	Define new static function.
+	(die_member_offset): Primarily use DW_AT_data_bit_offset if its
+	present.  Otherwise, look for DW_AT_bit_offset.  Use the new
+	read_and_convert_DW_at_bit_offset function to properly interpret
+	DW_AT_bit_offset if its present.  Update comment.
+	* tests/data/test-diff-filter/test-PR26684-dwarf{4,5}.o: New
+	binary test inputs.
+	* tests/data/test-diff-filter/test-PR26684.c: Source code of the
+	new binary test inputs above.
+	* tests/data/test-diff-filter/test-PR26684-report-0.txt: New
+	reference test output.
+	* tests/data/Makefile.am: Add the new test material above to
+	source distribution.
+	* tests/test-diff-filter.cc (in_out_specs): Add the test inputs
+	above to this test harness.
+	* tests/data/test-annotate/test13-pr18894.so.abi: Adjust.
+	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
+	* tests/data/test-annotate/test17-pr19027.so.abi: Adjust.
+	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Adjust.
+	* tests/data/test-annotate/test21-pr19092.so.abi: Adjust.
+	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi:
+	Adjust.
+	* tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt:
+	Adjust.
+	* tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Adjust.
+	* tests/data/test-read-dwarf/PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi:
+	Adjust.
+	* tests/data/test-read-dwarf/test13-pr18894.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi:
+	Adjust.
+	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
+	Adjust.
+
+2021-01-27  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27255 - fedabipkgdiff fails on nfs-utils on Fedora 33
+	* tools/fedabipkgdiff (RPMCollection::get_sibling_debuginfo):
+	Update comment.
+	(RPMCollection::get_matching_debuginfo): Define new function.
+	(generate_comparison_halves): Use
+	RPMCollection::get_matching_debuginfo instead of
+	RPMCollection::get_sibling_debuginfo.
+
+2021-01-26  Dodji Seketeli <dodji@redhat.com>
+
+	dwarf-reader: Support fast DW_FORM_line_strp string comparison
+	* src/abg-dwarf-reader.cc (compare_dies_string_attribute_value):
+	Support DW_FORM_line_strp.
+	* tests/data/test-diff-pkg/sshpass-1.07-1.fc34.x86_64-self-check-report-0.txt:
+	New reference test output.
+	* tests/data/test-diff-pkg/sshpass-1.07-1.fc34.x86_64.rpm: New
+	test input.
+	* tests/data/test-diff-pkg/sshpass-debuginfo-1.07-1.fc34.x86_64.rpm:
+	Likewise.
+	* tests/data/Makefile.am: Add the new testing material above to
+	source distribution.
+	* tests/test-diff-pkg.cc (in_out_specs): Add the test input above
+	to this harness.
+
+2021-01-26  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27232 - fedabipkgdiff fails on gawk from Fedora 33
+	* tools/abipkgdiff.cc (options::pkg{1,2}): Add new data members to
+	store the packages to compare and have them available for the
+	various functions that may need them down the road.
+	(package::create_abi_file_path): Add new function.
+	(compare_to_self): Use the new package::create_abi_file_path to
+	create the path to the ABI file in a directory not owned by the
+	package.  That should increase our chances of having the rights to
+	write that one.  Make sure to emit error message when the
+	comparison against self fails.
+	({compare_task, self_compare_task}::perform): During the process
+	of comparison if an internal error happens, report it.  Cleanup
+	the existing reporting a little bit.
+	(pkg_extraction_task::perform): Fix comment.
+	* tests/data/test-diff-pkg/libxfce4ui-devel-4.12.1-8.fc27.ppc64-self-report-0.txt:
+	Adjust.
+
+2021-01-26  Matthias Maennich <maennich@google.com>
+
+	abipkgdiff: Address operator precedence warning
+	* tools/abipkgdiff.cc (compare_to_self): address clang warning.
+
+2021-01-26  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27233 - fedabipkgdiff fails on package gnupg2 from Fedora 33
+	* src/abg-dwarf-reader.cc
+	(read_context::canonicalize_types_scheduled): Don't forget to
+	canonicalize types stored in extra_types_to_canonicalize_.
+	* src/abg-ir.cc (type_base::get_canonical_type_for): Add better
+	comment.
+	(hash_as_canonical_type_or_constant): Remove crutch that is
+	useless now that we canonicalize almost all types in the system.
+
+2021-01-25  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27236 - Pointer comparison wrongly fails because of typedef change
+	* src/abg-ir.cc (equals): In the overloads for pointer_type_def,
+	reference_type_def and array_type_def, compare the pointed-to-type
+	modulo typedefs.
+	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Adjust.
+	* tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt:
+	Adjust.
+	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
+	Adjust.
+
+2021-01-22  Dodji Seketeli <dodji@redhat.com>
+
+	Ignore duplicated functions and those not associated with ELF symbols
+	* include/abg-ir.h (class_or_union::string_mem_fn_sptr_map_type):
+	Add a typedef for unordered_map<string, method_decl_sptr>.
+	(class_or_union::find_member_function_sptr): Declare new function.
+	* src/abg-ir.cc (class_or_union::priv::mem_fns_map_): Change the
+	type of this to string_mem_fn_sptr_map_type, so that shared
+	pointers to functions can be stored in the map, instead of bare
+	pointers to functions.  This is useful to implement
+	class_or_union::find_member_function_sptr which returns a shared
+	pointer to function.
+	(class_or_union::find_member_function_sptr): Define new function.
+	(class_or_union::find_member_function): Adjust.
+	(method_decl::set_linkage_name): Use a non-deleting shared pointer
+	to store the current instance of member function into
+	class_or_union::priv::mem_fns_map_.
+	(hash_as_canonical_type_or_constant): As we are seeing more
+	function types, it appears that some function types are not
+	canonicalized.  I am not sure why exactly, but let's loosen the
+	assert here for now, I'll chase the root of this later.
+	* src/abg-dwarf-reader.cc (finish_member_function_reading):
+	Improve detection of member function 'static-ness' by handling
+	cases where a this pointer can be const.  Also support
+	DW_AT_object_pointer when it's present.  This fixes the occurrence
+	of spurious change reports about loss of 'static-ness' of member
+	functions.
+	(potential_member_fn_should_be_dropped): Define new static
+	function and ...
+	(build_ir_node_from_die): ... use it here.  When a function DIE
+	has the same linkage name as an existing function IR, do not
+	create a new IR for it.  Rather, re-use the existing one to
+	complete it with the properties found on the function DIE.  If a
+	new function doesn't seem to have an associated ELF symbol and is
+	not meant to be a virtual member function then drop its IR on the
+	floor as well.
+	* tests/data/test-annotate/libtest23.so.abi: Adjust.
+	* tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise.
+	* tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise.
+	* tests/data/test-annotate/test0.abi: Likewise.
+	* tests/data/test-annotate/test1.abi: Likewise.
+	* tests/data/test-annotate/test14-pr18893.so.abi: Likewise.
+	* tests/data/test-annotate/test15-pr18892.so.abi: Likewise.
+	* tests/data/test-annotate/test17-pr19027.so.abi: Likewise.
+	* tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
+	* tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
+	* tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
+	* tests/data/test-annotate/test21-pr19092.so.abi: Likewise.
+	* tests/data/test-annotate/test6.so.abi: Likewise.
+	* tests/data/test-annotate/test8-qualified-this-pointer.so.abi: Likewise.
+	* tests/data/test-diff-dwarf-abixml/PR25409-librte_bus_dpaa.so.20.0.abi: Likewise.
+	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi: Likewise.
+	* tests/data/test-diff-dwarf/test0-report.txt: Likewise.
+	* tests/data/test-diff-dwarf/test28-vtable-changes-report-0.txt: Likewise.
+	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise.
+	* tests/data/test-diff-filter/test0-report.txt: Likewise.
+	* tests/data/test-diff-filter/test01-report.txt: Likewise.
+	* tests/data/test-diff-filter/test10-report.txt: Likewise.
+	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise.
+	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise.
+	* tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
+	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise.
+	* tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise.
+	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
+	* tests/data/test-diff-filter/test9-report.txt: Likewise.
+	* tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Likewise.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise.
+	* tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Likewise.
+	* tests/data/test-diff-suppr/test24-soname-report-1.txt: Likewise.
+	* tests/data/test-diff-suppr/test24-soname-report-10.txt: Likewise.
+	* tests/data/test-diff-suppr/test24-soname-report-12.txt: Likewise.
+	* tests/data/test-diff-suppr/test24-soname-report-14.txt: Likewise.
+	* tests/data/test-diff-suppr/test24-soname-report-16.txt: Likewise.
+	* tests/data/test-diff-suppr/test24-soname-report-4.txt: Likewise.
+	* tests/data/test-diff-suppr/test31-report-1.txt: Likewise.
+	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise.
+	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/libtest23.so.abi: Likewise.
+	* tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise.
+	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test0.abi: Likewise.
+	* tests/data/test-read-dwarf/test0.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test1.abi: Likewise.
+	* tests/data/test-read-dwarf/test1.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test6.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test6.so.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test8-qualified-this-pointer.so.hash.abi: Likewise.
+	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
+
+2021-01-20  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 27204 -  potential loss of some aliased ELF function symbols
+	* src/abg-ir.cc (function_decl::get_id): If the elf symbol has
+	aliases, make the function name be part of the ID so that this ID
+	differs from the one of the other functions that share a symbol
+	alias with this one.
+	* tests/data/test-abidiff/test-PR18791-report0.txt: Adjust.
+	* tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt: Likewise.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise.
+	* tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise.
+	* tests/data/test-diff-filter/test41-report-0.txt: Likewise.
+	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
+	* tests/data/test-diff-pkg/glibc-2.32-3.fc33.aarch64-self-check-report-0.txt:
+	New test reference output.
+	* tests/data/test-diff-pkg/glibc-2.32-3.fc33.aarch64.rpm: New test
+	input RPM.
+	* tests/data/test-diff-pkg/glibc-debuginfo-2.32-3.fc33.aarch64.rpm:
+	Likewise.
+	* tests/data/Makefile.am: Add the new test material to source
+	distribution.
+	* tests/test-diff-pkg.cc (in_out_specs): Add the new test input
+	RPMs to this test harness.
+
+2020-12-15  Matthias Maennich <maennich@google.com>
+
+	abg-ir: Optimize calls to std::string::find() for a single char.
+	* src/abg-ir.cc (elf_symbol::get_name_and_version_from_id):
+	use character literal overload for single character string::find.
+	(parse_integral_type): Likewise.
+	Suggested-by: Chris Kennelly <ckennelly@google.com>
+
+2021-01-15  Dodji Seketeli <dodji@redhat.com>
+
+	Bug 26992 - Try harder to resolve declaration-only classes
+	* src/abg-dwarf-reader.cc
+	(read_context::compare_before_canonicalisation): Define new member
+	function.
+	(read_context::resolve_declaration_only_classes): When there are
+	more than one definition that can resolve a given declaration, if
+	all those definitions are equal, then resolve the declaration to
+	those definitions.
+	(read_context::resolve_declaration_only_enums): Add a comment to
+	update similarly update this function (or do away with it
+	completely) later.
+	* tests/data/test-annotate/test15-pr18892.so.abi: Adjust.
+	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise.
+	* tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise.
+	* tests/data/test-diff-pkg/cogl-1.22.8-2.fc33.x86_64.rpm: Add new
+	test input.
+	* tests/data/test-diff-pkg/cogl-debuginfo-1.22.8-2.fc33.x86_64.rpm:
+	Likewise.
+	* tests/data/test-diff-pkg/cogl-1.22.8-2.fc33.x86_64.self-check-report-0.txt:
+	Likewise.
+	* tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs
+	to the test harness.
+	* tests/data/Makefile.am: Add the new test input files to source
+	distribution.
+
+2021-01-11  Dodji Seketeli <dodji@redhat.com>
+
+	mainpage: Update web page for 1.8 release
+	* doc/website/mainpage.txt: Update web page for 1.8 release
+
+2020-12-14  Matthias Maennich <maennich@google.com>
+
+	Update catch2 testing framework: v1.12.2 -> v2.13.3
+	* tests/lib/catch.hpp: update to v2.13.3
+	* tests/test-symtab.cc (TEST_CASE("Symtab::SimpleSymtabs")): Use
+	the corpus variable to avoid unused variable warnings.
+
+2020-12-14  Matthias Maennich <maennich@google.com>
+
+	clang-format: define C++ standard to improve formatting
+	* .clang-format: Set C++11 standard for formatting.
+
+2020-12-11  Giuliano Procida <gprocida@google.com>
+
+	Refresh ABI cross check test files
+	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi:
+	Refreshed ABI.
+	* tests/data/test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1-report-0.txt:
+	File now empty.
+
+2020-12-14  Matthias Maennich <maennich@google.com>
+
+	Drop unneccessary includes of abg-cxx-compat.h
+	* include/abg-comparison.h: Remove include of abg-cxx-compat.h.
+	* include/abg-diff-utils.h: Likewise.
+	* include/abg-fwd.h: Likewise.
+	* include/abg-ini.h: Likewise.
+	* include/abg-interned-str.h: Likewise.
+	* include/abg-ir.h: Likewise.
+	* include/abg-libxml-utils.h: Likewise.
+	* include/abg-libzip-utils.h: Likewise.
+	* include/abg-regex.h: Likewise.
+	* include/abg-reporter.h: Likewise.
+	* include/abg-sptr-utils.h: Likewise.
+	* include/abg-suppression.h: Likewise.
+	* include/abg-tools-utils.h: Likewise.
+	* include/abg-workers.h: Likewise.
+	* src/abg-comp-filter.cc: Likewise.
+	* src/abg-comparison-priv.h: Likewise.
+	* src/abg-corpus.cc: Likewise.
+	* src/abg-dwarf-reader.cc: Likewise.
+	* src/abg-hash.cc: Likewise.
+	* src/abg-ir.cc: Likewise.
+	* src/abg-reader.cc: Likewise.
+	* src/abg-suppression.cc: Likewise.
+	* src/abg-tools-utils.cc: Likewise.
+	* src/abg-writer.cc: Likewise.
+	* tests/test-diff-suppr.cc: Likewise.
+	* tests/test-read-write.cc: Likewise.
+	* tools/abicompat.cc: Likewise.
+	* tools/abidw.cc: Likewise.
+	* tools/abilint.cc: Likewise.
+	* tools/abipkgdiff.cc: Likewise.
+
+2020-12-14  Matthias Maennich <maennich@google.com>
+
+	Remove <unordered_set> usages from abg_compat
+	* include/abg-cxx-compat.h: Drop compatibility for <unordered_set>.
+	* include/abg-comparison.h: migrate abg_compat use to std.
+	* include/abg-interned-str.h: Likewise.
+	* include/abg-suppression.h: Likewise.
+	* src/abg-comparison-priv.h: Likewise.
+	* src/abg-dwarf-reader.cc: Likewise.
+	* tests/test-diff-suppr.cc: Likewise.
+	* tools/abipkgdiff.cc: Likewise.
+
+2020-12-14  Matthias Maennich <maennich@google.com>
+
+	Remove <unordered_map> usages from abg_compat
+	* include/abg-cxx-compat.h: Drop compatibility layer for <unordered_map>.
+	* include/abg-comparison.h: migrate abg_compat use to std.
+	* include/abg-cxx-compat.h: Likewise.
+	* include/abg-fwd.h: Likewise.
+	* include/abg-ir.h: Likewise.
+	* src/abg-corpus.cc: Likewise.
+	* src/abg-dwarf-reader.cc: Likewise.
+	* src/abg-ir.cc: Likewise.
+	* src/abg-reader.cc: Likewise.
+	* src/abg-writer.cc: Likewise.
+
+2020-12-14  Matthias Maennich <maennich@google.com>
+
+	Remove <memory> usages from abg_compat
+	* include/abg-cxx-compat.h: Drop compatibility layer for <memory>.
+	* include/abg-diff-utils.h: migrate abg_compat use to std.
+	* include/abg-fwd.h: Likewise.
+	* include/abg-ini.h: Likewise.
+	* include/abg-interned-str.h: Likewise.
+	* include/abg-libxml-utils.h: Likewise.
+	* include/abg-libzip-utils.h: Likewise.
+	* include/abg-regex.h: Likewise.
+	* include/abg-reporter.h: Likewise.
+	* include/abg-sptr-utils.h: Likewise.
+	* include/abg-tools-utils.h: Likewise.
+	* include/abg-workers.h: Likewise.
+	* src/abg-comp-filter.cc: Likewise.
+	* src/abg-comparison-priv.h: Likewise.
+	* src/abg-dwarf-reader.cc: Likewise.
+	* src/abg-ir.cc: Likewise.
+	* src/abg-reader.cc: Likewise.
+	* src/abg-suppression.cc: Likewise.
+	* src/abg-tools-utils.cc: Likewise.
+	* src/abg-writer.cc: Likewise.
+	* tests/test-diff-filter.cc: Likewise.
+	* tests/test-diff-pkg.cc: Likewise.
+	* tests/test-diff-suppr.cc: Likewise.
+	* tests/test-read-dwarf.cc: Likewise.
+	* tests/test-read-write.cc: Likewise.
+	* tests/test-types-stability.cc: Likewise.
+	* tests/test-write-read-archive.cc: Likewise.
+	* tools/abicompat.cc: Likewise.
+	* tools/abidiff.cc: Likewise.
+	* tools/abidw.cc: Likewise.
+	* tools/abilint.cc: Likewise.
+	* tools/abipkgdiff.cc: Likewise.
+
+2020-12-14  Matthias Maennich <maennich@google.com>
+
+	Remove <functional> usages from abg_compat
+	* include/abg-cxx-compat.h: Drop compatibility layer for <functional>.
+	* include/abg-interned-str.h: migrate abg_compat use to std.
+	* include/abg-ir.h: Likewise.
+	* src/abg-hash.cc: Likewise.
+	* src/abg-ir.cc: Likewise.
+
+2020-12-14  Matthias Maennich <maennich@google.com>
+
+	Drop C++03 compatibility layer
+	* include/abg-cxx-compat.h: remove compatibility with pre C++11.
+	* include/abg-ir.h: Remove mention of std::tr1 from comments.
+	* include/abg-sptr-utils.h: Likewise.
+
+2020-12-04  Giuliano Procida <gprocida@google.com>
+
+	Add qualifier / typedef / array / pointer test
+	* tests/data/Makefile.am: Add new test files
+	* tests/data/test-abidiff-exit/qualifier-typedef-array-v0.c:
+	New test file.
+	* tests/data/test-abidiff-exit/qualifier-typedef-array-v0.o:
+	New test file.
+	* tests/data/test-abidiff-exit/qualifier-typedef-array-v1.c:
+	New test file.
+	* tests/data/test-abidiff-exit/qualifier-typedef-array-v1.o:
+	New test file.
+	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-0.txt:
+	Plain diff report.
+	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt:
+	Harmless diff report.
+	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-2.txt:
+	Leaf changes report.
+	* tests/data/test-abidiff-exit/qualifier-typedef-array-report-3.txt:
+	Harmless leaf changes report.
+	* tests/test-abidiff-exit.cc: Run new test.
+
+2020-12-03  Giuliano Procida <gprocida@google.com>
+
+	ir: Arrays are indirect types for type structure similarity purposes
+	* src/abg-ir.cc (types_have_similar_structure): When examining
+	array types, always treat element types as being underlying types
+	of an indirect type.
+	* tests/data/Makefile.am: Add new test case files.
+	* tests/data/test-abidiff-exit/test-non-leaf-array-report.txt:
+	New test case showing correct --leaf-changes-only reporting.
+	* tests/data/test-abidiff-exit/test-non-leaf-array-v0.c:
+	Likewise.
+	* tests/data/test-abidiff-exit/test-non-leaf-array-v0.o:
+	Likewise.
+	* tests/data/test-abidiff-exit/test-non-leaf-array-v1.c:
+	Likewise.
+	* tests/data/test-abidiff-exit/test-non-leaf-array-v1.o:
+	Likewise.
+	* tests/test-abidiff-exit.cc: Run new test case.
+
+2020-12-04  Dodji Seketeli <dodji@redhat.com>
+
+	ir: Add better comments to types_have_similar_structure
+	* src/abg-ir.cc (types_have_similar_structure): Arrays are also
+	indirect types, just like pointers and references, for the purpose
+	of the concept of "type similarity".  Add that to the introductory
+	comment of the function.  Add some more misc comments throughout
+	the code base.
+
+2020-12-03  Giuliano Procida <gprocida@google.com>
+
+	abidiff: support --dump-diff-tree with --leaf-changes-only
+	* src/abg-leaf-reporter.cc (leaf_reporter::report): In the
+	corpus_diff override, conclude by calling
+	maybe_dump_diff_tree.
+
+2020-12-03  Dodji Seketeli <dodji@redhat.com>
+
+	Use C++11 for the code base
+	* CONTRIBUTING: Enact use of c++11. Also, we favor those who
+	read/debug/maintain the code as opposed to those who write it ;-)
+	* configure.ac: Switch to c++11 unconditionally.
+	* src/Makefile.am: Adjust.
+	* tests/Makefile.am: Adjust.
+
+2020-12-03  Dodji Seketeli <dodji@redhat.com>
+
+	CONTRIBUTING: Update instructions about regression tests
+	* CONTRIBUTING: Update instructions about how to launch regression
+	tests.
+
+2020-12-02  Dodji Seketeli <dodji@redhat.com>
+
+	Teach Automake that COPYING* files are gone from sources
+	* Makefile.am: Teach Automake that COPYING* files are gone and
+	that LICENSE.txt and license-change-2020.txt were added.
+
+2020-06-09  Dodji Seketeli <dodji@redhat.com>
+
+	Add a license-change-2020.txt file
+	* license-change-2020.txt: New file.
+
+2020-06-09  Dodji Seketeli <dodji@redhat.com>
+
+	Delete COPYING* files
+	* COPYING: Delete.
+	* COPYING-GPLV3: Likewise.
+	* COPYING-LGPLV2: Likewise.
+	* COPYING-LGPLV3: Likewise.
+
+2020-06-09  Dodji Seketeli <dodji@redhat.com>
+
+	Add the LICENSE.txt file
+	* LICENSE.txt: New file coming from
+	http://llvm.org/foundation/relicensing/LICENSE.txt.
+
+2020-05-29  Dodji Seketeli <dodji@redhat.com>
+
+	Re-license the project to Apache v2 With LLVM Exception
+	* abigail.m4: Change the SPDX identifier from "GPL-3.0-or-later
+	WITH GCC-exception-3.1" to "Apache-2.0 WITH LLVM-exception"
+	* include/abg-cxx-compat.h: Change the SPDX identifier from
+	"LGPL-2.0-or-later" to "Apache-2.0 WITH LLVM-exception".
+	* .clang-format: Change the SPDX identifier from
+	"LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception".
+	* Makefile.am: Likewise.
+	* bash-completion/Makefile.am: Likewise.
+	* bash-completion/abicompat: Likewise.
+	* bash-completion/abidiff: Likewise.
+	* bash-completion/abidw: Likewise.
+	* bash-completion/abilint: Likewise.
+	* bash-completion/abinilint: Likewise.
+	* bash-completion/abipkgdiff: Likewise.
+	* bash-completion/abisym: Likewise.
+	* bash-completion/fedabipkgdiff: Likewise.
+	* configure.ac: Likewise.
+	* default.abignore: Likewise.
+	* doc/Makefile.am: Likewise.
+	* doc/api/libabigail.doxy: Likewise.
+	* doc/manuals/Makefile.am: Likewise.
+	* doc/website/libabigail-website.doxy: Likewise.
+	* include/Makefile.am: Likewise.
+	* include/abg-comp-filter.h: Likewise.
+	* include/abg-comparison.h: Likewise.
+	* include/abg-config.h: Likewise.
+	* include/abg-corpus.h: Likewise.
+	* include/abg-diff-utils.h: Likewise.
+	* include/abg-dwarf-reader.h: Likewise.
+	* include/abg-fwd.h: Likewise.
+	* include/abg-hash.h: Likewise.
+	* include/abg-ini.h: Likewise.
+	* include/abg-interned-str.h: Likewise.
+	* include/abg-ir.h: Likewise.
+	* include/abg-libxml-utils.h: Likewise.
+	* include/abg-libzip-utils.h: Likewise.
+	* include/abg-reader.h: Likewise.
+	* include/abg-regex.h: Likewise.
+	* include/abg-reporter.h: Likewise.
+	* include/abg-sptr-utils.h: Likewise.
+	* include/abg-suppression.h: Likewise.
+	* include/abg-tools-utils.h: Likewise.
+	* include/abg-traverse.h: Likewise.
+	* include/abg-version.h.in: Likewise.
+	* include/abg-viz-common.h: Likewise.
+	* include/abg-viz-dot.h: Likewise.
+	* include/abg-viz-svg.h: Likewise.
+	* include/abg-workers.h: Likewise.
+	* include/abg-writer.h: Likewise.
+	* scripts/dot_to_png.sh: Likewise.
+	* scripts/dot_to_svg.sh: Likewise.
+	* scripts/make-verbose.sh: Likewise.
+	* scripts/svg_to_plain_svg.sh: Likewise.
+	* scripts/svg_to_png_and_pdf.sh: Likewise.
+	* src/Makefile.am: Likewise.
+	* src/abg-comp-filter.cc: Likewise.
+	* src/abg-comparison-priv.h: Likewise.
+	* src/abg-comparison.cc: Likewise.
+	* src/abg-config.cc: Likewise.
+	* src/abg-corpus-priv.h: Likewise.
+	* src/abg-corpus.cc: Likewise.
+	* src/abg-default-reporter.cc: Likewise.
+	* src/abg-diff-utils.cc: Likewise.
+	* src/abg-dwarf-reader.cc: Likewise.
+	* src/abg-elf-helpers.cc: Likewise.
+	* src/abg-elf-helpers.h: Likewise.
+	* src/abg-hash.cc: Likewise.
+	* src/abg-ini.cc: Likewise.
+	* src/abg-internal.h: Likewise.
+	* src/abg-ir-priv.h: Likewise.
+	* src/abg-ir.cc: Likewise.
+	* src/abg-leaf-reporter.cc: Likewise.
+	* src/abg-libxml-utils.cc: Likewise.
+	* src/abg-libzip-utils.cc: Likewise.
+	* src/abg-reader.cc: Likewise.
+	* src/abg-regex.cc: Likewise.
+	* src/abg-reporter-priv.cc: Likewise.
+	* src/abg-reporter-priv.h: Likewise.
+	* src/abg-suppression-priv.h: Likewise.
+	* src/abg-suppression.cc: Likewise.
+	* src/abg-tools-utils.cc: Likewise.
+	* src/abg-traverse.cc: Likewise.
+	* src/abg-viz-common.cc: Likewise.
+	* src/abg-viz-dot.cc: Likewise.
+	* src/abg-viz-svg.cc: Likewise.
+	* src/abg-workers.cc: Likewise.
+	* src/abg-writer.cc: Likewise.
+	* tests/Makefile.am: Likewise.
+	* tests/data/Makefile.am: Likewise.
+	* tests/lib/catch.cc: Likewise.
+	* tests/mockfedabipkgdiff.in: Likewise.
+	* tests/print-diff-tree.cc: Likewise.
+	* tests/runtestcanonicalizetypes.sh.in: Likewise.
+	* tests/runtestdefaultsupprs.py.in: Likewise.
+	* tests/runtestdefaultsupprspy3.sh.in: Likewise.
+	* tests/runtestfedabipkgdiff.py.in: Likewise.
+	* tests/runtestfedabipkgdiffpy3.sh.in: Likewise.
+	* tests/test-abicompat.cc: Likewise.
+	* tests/test-abidiff-exit.cc: Likewise.
+	* tests/test-abidiff.cc: Likewise.
+	* tests/test-alt-dwarf-file.cc: Likewise.
+	* tests/test-annotate.cc: Likewise.
+	* tests/test-core-diff.cc: Likewise.
+	* tests/test-cxx-compat.cc: Likewise.
+	* tests/test-diff-dwarf-abixml.cc: Likewise.
+	* tests/test-diff-dwarf.cc: Likewise.
+	* tests/test-diff-filter.cc: Likewise.
+	* tests/test-diff-pkg.cc: Likewise.
+	* tests/test-diff-suppr.cc: Likewise.
+	* tests/test-diff2.cc: Likewise.
+	* tests/test-dot.cc: Change the SPDX identifier from
+	"GPL-3.0-or-later WITH GCC-exception-3.1" to "Apache-2.0 WITH
+	LLVM-exception"
+	* tests/test-elf-helpers.cc: Change the SPDX identifier from
+	"LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception"
+	* tests/test-ini.cc: Likewise.
+	* tests/test-ir-walker.cc: Likewise.
+	* tests/test-kmi-whitelist.cc: Likewise.
+	* tests/test-lookup-syms.cc: Likewise.
+	* tests/test-read-dwarf.cc: Likewise.
+	* tests/test-read-write.cc: Likewise.
+	* tests/test-svg.cc: Change the SPDX identifier from
+	"GPL-3.0-or-later WITH GCC-exception-3.1" to "Apache-2.0 WITH
+	LLVM-exception".
+	* tests/test-symtab.cc: Change the SPDX identifier from
+	"LGPL-3.0-or-later" to "Apache-2.0 WITH LLVM-exception"
+	* tests/test-tools-utils.cc: Likewise.
+	* tests/test-types-stability.cc: Likewise.
+	* tests/test-utils.cc: Likewise.
+	* tests/test-utils.h: Likewise.
+	* tests/test-write-read-archive.cc: Likewise.
+	* tests/update-test-output.py: Likewise.
+	* tools/Makefile.am: Likewise.
+	* tools/abiar.cc: Likewise.
+	* tools/abicompat.cc: Likewise.
+	* tools/abidiff.cc: Likewise.
+	* tools/abidw.cc: Likewise.
+	* tools/abilint.cc: Likewise.
+	* tools/abipkgdiff.cc: Likewise.
+	* tools/abisym.cc: Likewise.
+	* tools/binilint.cc: Likewise.
+	* tools/fedabipkgdiff: Likewise.
+	* tools/kmidiff.cc: Likewise.
+	* update-copyright.sh: Likewise.
+
+2020-05-29  Dodji Seketeli <dodji@redhat.com>
+
+	Add helper files to perform the re-licensing
+	* relicensing-scripts/file-licenses.orig.txt: New file that
+	contains the raw set of files with SPDX identifiers denoting
+	LGPLv3+ files.  It's the result of a simple command based on
+	"find" and "grep".
+	* relicensing-scripts/files-with-lgplv3.txt: New file
+	containing the same data as the file above, but massaged to be
+	easily useable by the script below.
+	* relicensing-scripts/do-relicensing.sh: This is a simple command
+	which performs the re-licensing on the files listed in the file
+	above.
+
+2020-05-29  Dodji Seketeli <dodji@redhat.com>
+
+	Add replace-spdx-license.sh script
+	* relicensing-scripts/replace-spdx-license.sh: New script.
+
+2020-05-27  Dodji Seketeli <dodji@redhat.com>
+
+	Add has-spdx-header.sh script
+	* relicensing-scripts/has-spdx-header.sh: New script.
+
+2020-05-29  Dodji Seketeli <dodji@redhat.com>
+
+	Add missing SPDX headers to source files not specifying any license
+	* Makefile.am: Add a LGPL-3.0-or-later SPDX header prefixed
+	with '##' so that that the header doesn't get emitted in the
+	resulting Makefile.in file.  Note that the license of Makefile.in
+	files is "FSF All Permissible License", which virtually compatible
+	with anything.
+	* bash-completion/Makefile.am: Likewise.
+	* doc/Makefile.am: Likewise
+	* doc/manuals/Makefile.am: Likewise
+	* include/Makefile.am: Likewise
+	* src/Makefile.am: Likewise
+	* tests/Makefile.am: Likewise
+	* tests/data/Makefile.am: Likewise
+	* tools/Makefile.am: Likewise
+	* .clang-format: Add a LGPL-3.0-or-later SPDX header.
+	* bash-completion/abicompat: Likewise.
+	* bash-completion/abidiff: Likewise.
+	* bash-completion/abidw: Likewise.
+	* bash-completion/abilint: Likewise.
+	* bash-completion/abinilint: Likewise.
+	* bash-completion/abipkgdiff: Likewise.
+	* bash-completion/abisym: Likewise.
+	* bash-completion/fedabipkgdiff: Likewise.
+	* configure.ac: Likewise.
+	* default.abignore: Likewise.
+	* doc/api/libabigail.doxy: Likewise.
+	* doc/website/libabigail-website.doxy: Likewise.
+	* include/abg-version.h.in: Likewise.
+	* scripts/dot_to_png.sh: Likewise.
+	* scripts/dot_to_svg.sh: Likewise.
+	* scripts/make-verbose.sh: Likewise.
+	* scripts/svg_to_plain_svg.sh: Likewise.
+	* scripts/svg_to_png_and_pdf.sh: Likewise.
+	* tests/runtestcanonicalizetypes.sh.in: Likewise.
+	* tests/runtestdefaultsupprs.py.in: Likewise.
+	* tests/runtestdefaultsupprspy3.sh.in: Likewise.
+	* tests/runtestfedabipkgdiffpy3.sh.in: Likewise.
+	* tests/update-test-output.py: Likewise.
+	* update-copyright.sh: Likewise.
+
+2020-03-07  Matthias Maennich <maennich@google.com>
+
+	Replace individual license references with SPDX Identifiers
+	* abigail.m4: Replace the license header with the SPDX identifier
+	GPL-3.0-or-later WITH GCC-exception-3.1
+	* autoconf-archive/ax_check_python_modules.m4: Correctly set the
+	SPDX identifier to FSFAP.
+	* autoconf-archive/ax_compare_version.m4: Replace the license
+	header with the SPDX identifier FSFAP.
+	* autoconf-archive/ax_prog_python_version.m4: Likewise.
+	header with the SPDX identifier FSFAP.
+	* autoconf-archive/ax_valgrind_check.m4: Likewise.
+	* gen-changelog.py: Replace the license header with the SPDX
+	identifier LGPL-2.0-or-later.
+	* include/abg-comp-filter.h: Replace the license header with the
+	SPDX identifier LGPL-3.0-or-later.
+	* include/abg-comparison.h: Likewise.
+	* include/abg-config.h: Likewise.
+	* include/abg-corpus.h: Likewise.
+	* include/abg-cxx-compat.h: Replace the license header with the
+	SPDX identifier LGPL-2.0-or-later.
+	* include/abg-diff-utils.h: Replace the license header with the
+	SPDX identifier LGPL-3.0-or-later
+	* include/abg-dwarf-reader.h: Likewise.
+	* include/abg-fwd.h: Likewise.
+	* include/abg-hash.h: Likewise.
+	* include/abg-ini.h: Likewise.
+	* include/abg-interned-str.h: Likewise.
+	* include/abg-ir.h: Likewise.
+	* include/abg-libxml-utils.h: Likewise.
+	* include/abg-libzip-utils.h: Likewise.
+	* include/abg-reader.h: Likewise.
+	* include/abg-regex.h: Likewise.
+	* include/abg-reporter.h: Likewise.
+	* include/abg-sptr-utils.h: Likewise.
+	* include/abg-suppression.h: Likewise.
+	* include/abg-tools-utils.h: Likewise.
+	* include/abg-traverse.h: Likewise.
+	* include/abg-viz-common.h: Likewise.
+	* include/abg-viz-dot.h: Likewise.
+	* include/abg-viz-svg.h: Likewise.
+	* include/abg-workers.h: Likewise.
+	* include/abg-writer.h: Likewise.
+	* install-sh: Replace the license header with the SPDX identifier MIT.
+	* ltmain.sh: Replace the license header with the SPDX identifier
+	GPL-2.0-or-later.  Note that this file has the libtool special
+	exception which allows us to redistribute it under the general
+	license of the project.
+	* src/abg-comp-filter.cc: Replace the license header with the SPDX
+	* src/abg-comparison-priv.h: Likewise.
+	* src/abg-comparison.cc: Likewise.
+	* src/abg-config.cc: Likewise.
+	* src/abg-corpus-priv.h: Likewise.
+	* src/abg-corpus.cc: Likewise.
+	* src/abg-default-reporter.cc: Likewise.
+	* src/abg-diff-utils.cc: Likewise.
+	* src/abg-dwarf-reader.cc: Likewise.
+	* src/abg-elf-helpers.cc: Likewise.
+	* src/abg-elf-helpers.h: Likewise.
+	* src/abg-regex.cc: Likewise.
+	* src/abg-hash.cc: Likewise.
+	* src/abg-ini.cc: Likewise.
+	* src/abg-internal.h: Likewise.
+	* src/abg-ir-priv.h: Likewise.
+	* src/abg-ir.cc: Likewise.
+	* src/abg-leaf-reporter.cc: Likewise.
+	* src/abg-libxml-utils.cc: Likewise.
+	* src/abg-libzip-utils.cc: Likewise.
+	* src/abg-reader.cc: Likewise.
+	* src/abg-reporter-priv.cc: Likewise.
+	* src/abg-reporter-priv.h: Likewise.
+	* src/abg-sptr-utils.cc: Likewise.
+	* src/abg-suppression-priv.h: Likewise.
+	* src/abg-suppression.cc: Likewise.
+	* src/abg-tools-utils.cc: Likewise.
+	* src/abg-traverse.cc: Likewise.
+	* src/abg-viz-common.cc: Likewise.
+	* src/abg-viz-dot.cc: Likewise.
+	* src/abg-viz-svg.cc: Likewise.
+	* src/abg-workers.cc: Likewise.
+	* src/abg-writer.cc: Likewise.
+	* tests/lib/catch.cc: Likewise.
+	* tests/lib/catch.hpp: Add an SPDX identifier BSL-1.0.
+	* tests/mockfedabipkgdiff.in: Replace the license header with the
+	SPDX identifier GPL-3.0-or-later.
+	* tests/print-diff-tree.cc: Likewise.
+	* tests/runtestfedabipkgdiff.py.in: Replaace the license header
+	with the SPDW identifier GPL-3.0-or-later.
+	* tests/test-abicompat.cc: Replace the license header with the
+	SPDX identifier LGPL-3.0-or-later.
+	* tests/test-abidiff-exit.cc: Likewise.
+	* tests/test-abidiff.cc: Likewise.
+	* tests/test-alt-dwarf-file.cc: Likewise.
+	* tests/test-annotate.cc: Likewise.
+	* tests/test-cxx-compat.cc: Likewise.
+	* tests/test-core-diff.cc: Likewise.
+	* tests/test-diff-dwarf-abixml.cc: Likewise.
+	* tests/test-diff-dwarf.cc: Likewise.
+	* tests/test-diff-filter.cc: Likewise.
+	* tests/test-diff-pkg.cc: Likewise.
+	* tests/test-diff-suppr.cc: Likewise.
+	* tests/test-diff2.cc: Likewise.
+	* tests/test-dot.cc: Replace the license header with the
+	SPDX identifier GPL-3.0-with-GCC-exception.
+	* tests/test-elf-helpers.cc: Replace the license header with the
+	SPDX identifier LGPL-3.0-or-later.
+	* tests/test-ini.cc: Likewise.
+	* tests/test-ir-walker.cc: Likewise.
+	* tests/test-kmi-whitelist.cc: Likewise.
+	* tests/test-lookup-syms.cc: Likewise.
+	* tests/test-read-dwarf.cc: Likewise.
+	* tests/test-read-write.cc: Likewise.
+	* tests/test-svg.cc: Replace the license header with the SPDX
+	identifier GPL-3.0-with-GCC-exception.
+	* tests/test-symtab.cc: Replace the license header with the SPDX
+	identifier LGPL-3.0-or-later.
+	* tests/test-tools-utils.cc: Likewise.
+	* tests/test-types-stability.cc: Likewise.
+	* tests/test-utils.cc: Likewise.
+	* tests/test-utils.h: Likewise.
+	* tests/test-write-read-archive.cc: Likewise.
+	* tools/abiar.cc: Likewise.
+	* tools/abicompat.cc: Likewise.
+	* tools/abidiff.cc: Likewise.
+	* tools/abidw.cc: Likewise.
+	* tools/abilint.cc: Likewise.
+	* tools/abipkgdiff.cc: Likewise.
+	* tools/abisym.cc: Likewise.
+	* tools/binilint.cc: Likewise.
+	* tools/fedabipkgdiff: Replace the license header with the
+	SPDX identifier GPL-3.0-or-later.
+	* tools/kmidiff.cc: Likewise.
+
+2020-12-01  Dodji Seketeli <dodji@redhat.com>
+
+	Bump version number to 2.0
+	* configure.ac: Bump number version to 2.0
+
+2020-12-01  Dodji Seketeli <dodji@redhat.com>
+
+	Update NEWS file for 1.8
+	* NEWS: Update for 1.8
+
+2020-12-01  Dodji Seketeli <dodji@redhat.com>
+
+	Update the Changelog for 1.8
+	* Changelog: Update automatically with "make update-changelog'
+
 2020-12-01  Dodji Seketeli <dodji@redhat.com>
 
 	Add check-self-compare to release regression testing
diff --git a/METADATA b/METADATA
index 1c658c8..c879242 100644
--- a/METADATA
+++ b/METADATA
@@ -10,7 +10,7 @@
     type: GIT
     value: "http://sourceware.org/git/libabigail.git"
   }
-  version: "acc4bea0b8fed335657878ee849adbd7b4238597"
-  last_upgrade_date { year: 2021 month: 4 day: 03 }
+  version: "71633a7c0c7c96c03db8c18826afea26da0f7b4b"
+  last_upgrade_date { year: 2022 month: 1 day: 10 }
   license_type: NOTICE
 }
diff --git a/Makefile.am b/Makefile.am
index af17048..65a1b12 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -65,7 +65,7 @@
 tag-release: tag-release-only
 
 upload-release-only:
-	scp $(TARBALL) sourceware.org:~ftp/pub/libabigail
+	scp $(TARBALL) sourceware.org:/var/ftp/pub/libabigail
 
 tarball: $(TARBALL)
 
diff --git a/NEWS b/NEWS
index 8613dfb..1132b66 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,160 @@
+2.0
+===
+
+Ben Woodard via Libabigail (5):
+      Fix declaratons of conditionally defined functions
+      Fix declaratons of conditionally defined functions
+      Bug 27512 - Remove broken zip-archive support
+      Fix trivial typo when printing version string
+      Fix trivial typo when printing version string
+
+Dodji Seketeli (90):
+      configure: add --enable-rpm415 option
+      Add check-self-compare to release regression testing
+      Bump version number to 2.0
+      Add missing SPDX headers to source files not specifying any license
+      Add has-spdx-header.sh script
+      Add replace-spdx-license.sh script
+      Add helper files to perform the re-licensing
+      Re-license the project to Apache v2 With LLVM Exception
+      Add the LICENSE.txt file
+      Delete COPYING* files
+      Add a license-change-2020.txt file
+      Teach Automake that COPYING* files are gone from sources
+      CONTRIBUTING: Update instructions about regression tests
+      Use C++11 for the code base
+      ir: Add better comments to types_have_similar_structure
+      mainpage: Update web page for 1.8 release
+      Bug 26992 - Try harder to resolve declaration-only classes
+      Bug 27204 -  potential loss of some aliased ELF function symbols
+      Ignore duplicated functions and those not associated with ELF symbols
+      Bug 27236 - Pointer comparison wrongly fails because of typedef change
+      Bug 27233 - fedabipkgdiff fails on package gnupg2 from Fedora 33
+      Bug 27232 - fedabipkgdiff fails on gawk from Fedora 33
+      dwarf-reader: Support fast DW_FORM_line_strp string comparison
+      Bug 27255 - fedabipkgdiff fails on nfs-utils on Fedora 33
+      Bug 26684 - Support DW_AT_data_bit_offset attribute
+      Bump ABIXML format version to 2.0
+      Bug 27165 - Better support multi-language binaries
+      Bug 27331 - Data member offset change not considered local
+      Bug 27267 - Better support for opaque enum types
+      dwarf-reader: Use DW_FORM_line_strp only if it's present
+      Use generic internal type name to canonicalize anonymous enums
+      Don't consider type name when comparing typedefs
+      tests: Update to catch.hpp v2.13.4 and fix #2178
+      Better sorting of (anonymous) types in ABIXML files
+      dwarf-reader: Keep stable order when de-duplicating class definitions
+      tests/catch.hpp: Add SPDX header back
+      Revert "Fix declaratons of conditionally defined functions"
+      dwarf-reader: Support more DWARF-5 type DIEs
+      Bug 27569 - abidiff misses a function parameter addition
+      Bug 27598 - abidiff mishandles union member functions
+      dwarf-reader: Canonicalize opaque enums and classes
+      dwarf-reader: properly set artificial-ness in opaque types
+      reader: Handle 'abi-corpus' element being possibly empty
+      reader: Use xmlFirstElementChild and xmlNextElementSibling rather than xml::advance_to_next_sibling_element
+      reader: Use xmlFirstElementChild/xmlNextElementSibling to iterate over children elements
+      Fix thinko in configure.ac
+      Miscellaneous indentation and comments cleanups
+      Fix DWARF type DIE canonicalization
+      Peel array types when peeling pointers from a type
+      Add primitives callable from the command line of the debugger
+      Detect failed self comparison in type canonicalization of abixml
+      Detect abixml canonical type instability during abidw --debug-abidiff
+      Introduce artificial locations
+      abixml reader: Fix recursive type definition handling
+      xml reader: Fix recursive qualified & reference type definition
+      ir: Enable setting breakpoint on first type inequality
+      Add environment::{get_type_id_from_pointer,get_canonical_type_from_type_id}
+      location:expand() shouldn't crash when no location manager available
+      ir: make 'debug(artefact)' support showing enums
+      reader: Canonicalizing a type once is enough
+      rhbz1951526 - SELF CHECK FAILED for 'gimp-2.10'
+      Fix recursive array type definition
+      abidw: Remove temporary .typeid files when using --debug-abidiff
+      abg-reader: Fix typo
+      doc: Fix typo
+      Revert "Fix trivial typo when printing version string"
+      Bug 27980 - Fix updating of type scope upon type canonicalization
+      ir: Improve the debugging facilities
+      ir: Tighten the test for anonymous data member
+      ir: Tighten type comparison optimization for Linux kernel binaries
+      Bug 27995 - Self comparison error from abixml file
+      Bug 27236 - Fix the canonical type propagation optimization
+      Bug 27236 - Allow updating classes from abixml
+      Bug 27236 - Don't forget to emit some referenced types
+      RHBZ 1925886 - Compare anonymous types without qualified names
+      Bug 27985 - abidiff: bad array types in report
+      RHBZ-1944096 - assertion failure during self comparison of systemd
+      writer: escape enum linkage name in abixml
+      ir: Avoid infinite loop during type canonicalization
+      ir: Fix canonical type propagation cancelling
+      xml-reader: Get back to original way of building qualified types
+      writer: Avoid sigsev on types with no translation unit
+      RHBZ1951496 - ir: Acknowledge that "void type" is not canonicalized
+      RHBZ1944102 - self comparing ABI of protobuf-3.14.0-2.el9 failed
+      abipkgdiff: Fix showing added/removed files
+      Bug 28316 - Failure to represent typedef named anonymous enums
+      abipkgdiff: Do not erase working dirs before we are done using them
+      Bug 27970 - Duplicated member functions cause spurious self comparison changes
+      dwarf-reader: Indent
+      Bug 27086 - Consider all C++ virtual destructors when there are many
+
+Giuliano Procida (17):
+      abidiff: support --dump-diff-tree with --leaf-changes-only
+      ir: Arrays are indirect types for type structure similarity purposes
+      Add qualifier / typedef / array / pointer test
+      Refresh ABI cross check test files
+      abidiff: do not qualify member names in diff report
+      abg-dwarf-reader: Fix typo in compare_dies_string_attribute_value
+      DWARF reader: Interpret ARM32 ELF addresses correctly
+      DWARF reader: Comment ARM32 ELF address interpretation
+      dwarf-reader: Treat union members as public by default.
+      abg-writer.cc: fix write_elf_symbol_reference loop
+      dwarf-reader: Create new corpus unconditionally
+      abg-reader: Ensure corpus always has a symtab reader
+      abg-reader: Create a fresh corpus object per corpus
+      ir: remove "is Linux string constant" property from elf_symbol
+      abg-ir.h: add declaration of operator<< for elf_symbol::visibility
+      PR28060 - Invalid offset for bitfields
+      abg-writer: faster referenced type emission tests
+
+Matthias Maennich (34):
+      Replace individual license references with SPDX Identifiers
+      Drop C++03 compatibility layer
+      Remove <functional> usages from abg_compat
+      Remove <memory> usages from abg_compat
+      Remove <unordered_map> usages from abg_compat
+      Remove <unordered_set> usages from abg_compat
+      Drop unneccessary includes of abg-cxx-compat.h
+      clang-format: define C++ standard to improve formatting
+      Update catch2 testing framework: v1.12.2 -> v2.13.3
+      abg-ir: Optimize calls to std::string::find() for a single char.
+      abipkgdiff: Address operator precedence warning
+      abg-cxx-compat: add simplified version of std::optional
+      abg-ir: elf_symbol: add is_in_ksymtab field
+      abg-ir: elf_symbol: add is_suppressed field
+      dwarf-reader split: create abg-symtab-reader.{h,cc} and test case
+      clang-format: Minor correction to not break parameters on the first line
+      Refactor ELF symbol table reading by adding a new symtab reader
+      Integrate new symtab reader into corpus and read_context
+      corpus: make get_(undefined_)?_(var|fun)_symbols use the new symtab
+      corpus: make get_unreferenced_(function|variable)_symbols use the new symtab
+      abg-reader: avoid using the (var|function)_symbol_map
+      dwarf-reader: read_context: use new symtab in *_symbols_is_exported
+      Switch kernel stuff over to new symtab and drop unused code
+      abg-elf-helpers: migrate ppc64 specific helpers
+      symtab_reader: add support for ppc64 ELFv1 binaries
+      abg-corpus: remove symbol maps and their setters
+      dwarf reader: drop (now) unused code related to symbol table reading
+      test-symtab: add tests for whitelisted functions
+      symtab/dwarf-reader: allow hinting of main symbols for aliases
+      dwarf-reader/writer: consider aliases when dealing with suppressions
+      symtab: Add support for MODVERSIONS (CRC checksums)
+      elf-helpers: refactor find_symbol_table_section
+      symtab-reader: add support for binaries compiled with CFI
+      Consistently use std::unique_ptr for private implementations (pimpl)
+
 1.8
 ===
 Dodji Seketeli (62):
diff --git a/android_build_version.sh b/android_build_version.sh
deleted file mode 100755
index c477ffd..0000000
--- a/android_build_version.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-set -x
-set -e
-
-dir="$1"
-out="$2"
-
-version=$(git -C "$dir" rev-parse --short=8 HEAD)-soong
-
-echo "#define ANDROID_BUILD_VERSION \"${version}\"" > "$out"
diff --git a/config.h b/config.h
index df0e5dc..e5475e6 100644
--- a/config.h
+++ b/config.h
@@ -68,8 +68,8 @@
 /* Define to 1 if you have the <inttypes.h> header file. */
 #define HAVE_INTTYPES_H 1
 
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
+/* Define to 1 if you have the <minix/config.h> header file. */
+/* #undef HAVE_MINIX_CONFIG_H */
 
 /* Defined to 1 if elf.h has R_AARCH64_ABS64 macro defined */
 #define HAVE_R_AARCH64_ABS64_MACRO 1
@@ -80,6 +80,9 @@
 /* Define to 1 if you have the <stdint.h> header file. */
 #define HAVE_STDINT_H 1
 
+/* Define to 1 if you have the <stdio.h> header file. */
+#define HAVE_STDIO_H 1
+
 /* Define to 1 if you have the <stdlib.h> header file. */
 #define HAVE_STDLIB_H 1
 
@@ -98,6 +101,9 @@
 /* Define to 1 if you have the <unistd.h> header file. */
 #define HAVE_UNISTD_H 1
 
+/* Define to 1 if you have the <wchar.h> header file. */
+#define HAVE_WCHAR_H 1
+
 /* Defined if libdw has the function dwarf_getalt */
 #define LIBDW_HAS_DWARF_GETALT 1
 
@@ -117,7 +123,7 @@
 #define PACKAGE_NAME "libabigail"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "libabigail 2.0"
+#define PACKAGE_STRING "libabigail 2.1"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "libabigail"
@@ -126,65 +132,128 @@
 #define PACKAGE_URL "http://sourceware.org/libabigail"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "2.0"
+#define PACKAGE_VERSION "2.1"
 
-/* Define to 1 if you have the ANSI C header files. */
+/* Define to 1 if all of the C90 standard headers exist (not just the ones
+   required in a freestanding environment). This macro is provided for
+   backward compatibility; new code need not use it. */
 #define STDC_HEADERS 1
 
 /* Enable extensions on AIX 3, Interix.  */
 #ifndef _ALL_SOURCE
 # define _ALL_SOURCE 1
 #endif
-/* Enable GNU extensions on systems that have them.  */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-/* Enable threading extensions on Solaris.  */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# define _POSIX_PTHREAD_SEMANTICS 1
-#endif
-/* Enable extensions on HP NonStop.  */
-#ifndef _TANDEM_SOURCE
-# define _TANDEM_SOURCE 1
+/* Enable general extensions on macOS.  */
+#ifndef _DARWIN_C_SOURCE
+# define _DARWIN_C_SOURCE 1
 #endif
 /* Enable general extensions on Solaris.  */
 #ifndef __EXTENSIONS__
 # define __EXTENSIONS__ 1
 #endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE 1
+#endif
+/* Enable X/Open compliant socket functions that do not require linking
+   with -lxnet on HP-UX 11.11.  */
+#ifndef _HPUX_ALT_XOPEN_SOCKET_API
+# define _HPUX_ALT_XOPEN_SOCKET_API 1
+#endif
+/* Identify the host operating system as Minix.
+   This macro does not affect the system headers' behavior.
+   A future release of Autoconf may stop defining this macro.  */
+#ifndef _MINIX
+/* # undef _MINIX */
+#endif
+/* Enable general extensions on NetBSD.
+   Enable NetBSD compatibility extensions on Minix.  */
+#ifndef _NETBSD_SOURCE
+# define _NETBSD_SOURCE 1
+#endif
+/* Enable OpenBSD compatibility extensions on NetBSD.
+   Oddly enough, this does nothing on OpenBSD.  */
+#ifndef _OPENBSD_SOURCE
+# define _OPENBSD_SOURCE 1
+#endif
+/* Define to 1 if needed for POSIX-compatible behavior.  */
+#ifndef _POSIX_SOURCE
+/* # undef _POSIX_SOURCE */
+#endif
+/* Define to 2 if needed for POSIX-compatible behavior.  */
+#ifndef _POSIX_1_SOURCE
+/* # undef _POSIX_1_SOURCE */
+#endif
+/* Enable POSIX-compatible threading on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# define _POSIX_PTHREAD_SEMANTICS 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-5:2014.  */
+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+# define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-1:2014.  */
+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+# define __STDC_WANT_IEC_60559_BFP_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-2:2015.  */
+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
+# define __STDC_WANT_IEC_60559_DFP_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-4:2015.  */
+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
+# define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-3:2015.  */
+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
+# define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TR 24731-2:2010.  */
+#ifndef __STDC_WANT_LIB_EXT2__
+# define __STDC_WANT_LIB_EXT2__ 1
+#endif
+/* Enable extensions specified by ISO/IEC 24747:2009.  */
+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
+# define __STDC_WANT_MATH_SPEC_FUNCS__ 1
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# define _TANDEM_SOURCE 1
+#endif
+/* Enable X/Open extensions.  Define to 500 only if necessary
+   to make mbstate_t available.  */
+#ifndef _XOPEN_SOURCE
+/* # undef _XOPEN_SOURCE */
+#endif
 
 
 /* Version number of package */
-#define VERSION "2.0"
+#define VERSION "2.1"
+
+/* Defined if user enables and system has the libctf library */
+/* #undef WITH_CTF */
 
 /* compile the deb package support in abipkgdiff */
 #define WITH_DEB 1
 
+/* compile support of debugging abidw --abidiff */
+/* #undef WITH_DEBUG_SELF_COMPARISON */
+
+/* compile support of debugging type canonicalization while using abidw
+   --debug-tc */
+/* #undef WITH_DEBUG_TYPE_CANONICALIZATION */
+
 /* compile the rpm package support in abipkgdiff */
 #define WITH_RPM 1
 
-/* has RPM 4.15 at least */
-#define WITH_RPM_4_15 1
+/* has rpm/zstd support */
+#define WITH_RPM_ZSTD 1
 
 /* compile the GNU tar archive support in abipkgdiff */
 #define WITH_TAR 1
 
-/* Enable large inode numbers on Mac OS X 10.5.  */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
-
 /* Number of bits in a file offset, on hosts where this is settable. */
 /* #undef _FILE_OFFSET_BITS */
 
 /* Define for large files, on AIX-style hosts. */
 /* #undef _LARGE_FILES */
-
-/* Define to 1 if on MINIX. */
-/* #undef _MINIX */
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
-   this defined. */
-/* #undef _POSIX_1_SOURCE */
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-/* #undef _POSIX_SOURCE */
diff --git a/configure.ac b/configure.ac
index 495460b..056a851 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 m4_define([version_major],   [2])
-m4_define([version_minor],   [0])
+m4_define([version_minor],   [1])
 
 AC_INIT([libabigail],
 	[version_major.version_minor],
@@ -38,10 +38,14 @@
 VERSION_MAJOR=version_major
 VERSION_MINOR=version_minor
 VERSION_REVISION=0
+ABIXML_VERSION_MAJOR=2
+ABIXML_VERSION_MINOR=1
 
 AC_SUBST(VERSION_MAJOR)
 AC_SUBST(VERSION_MINOR)
 AC_SUBST(VERSION_REVISION)
+AC_SUBST(ABIXML_VERSION_MAJOR)
+AC_SUBST(ABIXML_VERSION_MINOR)
 
 dnl This VERSION_SUFFIX environment variable is to allow appending
 dnl arbitrary text to the libabigail version string representation.
@@ -60,11 +64,24 @@
 	      ENABLE_RPM=$enableval,
 	      ENABLE_RPM=auto)
 
+# '--enable-rpm415' option name preserved for backwards compatibility.
 AC_ARG_ENABLE(rpm415,
 	      AS_HELP_STRING([--enable-rpm415=yes|no|auto],
-			     [enable the support of rpm 4.15 or higher in abipkgdiff (default is auto)]),
-	      ENABLE_RPM415=$enableval,
-	      ENABLE_RPM415=auto)
+			     [enable rpm/zstd in abipkgdiff testing (default is auto)]),
+	      ENABLE_RPM_ZSTD=$enableval,
+	      ENABLE_RPM_ZSTD=auto)
+
+AC_ARG_ENABLE(debug-self-comparison,
+	      AS_HELP_STRING([--enable-debug-self-comparison=yes|no],
+			     [enable debugging of self comparison with 'abidw --debug-abidiff'(default is no)]),
+	      ENABLE_DEBUG_SELF_COMPARISON=$enableval,
+	      ENABLE_DEBUG_SELF_COMPARISON=no)
+
+AC_ARG_ENABLE(debug-type-canonicalization,
+	      AS_HELP_STRING([--enable-debug-type-canonicalization=yes|no],
+			     [enable debugging of type canonicalization 'abidw --debug-tc'(default is no)]),
+	      ENABLE_DEBUG_TYPE_CANONICALIZATION=$enableval,
+	      ENABLE_DEBUG_TYPE_CANONICALIZATION=no)
 
 AC_ARG_ENABLE(deb,
 	      AS_HELP_STRING([--enable-deb=yes|no|auto],
@@ -132,6 +149,19 @@
 	      ENABLE_UBSAN=$enableval,
 	      ENABLE_UBSAN=no)
 
+dnl check if user has enabled CTF code
+AC_ARG_ENABLE(ctf,
+	      AS_HELP_STRING([--enable-ctf=yes|no],
+			     [disable support of ctf files)]),
+	      ENABLE_CTF=$enableval,
+	      ENABLE_CTF=no)
+
+AC_ARG_ENABLE(cxx17,
+	      AS_HELP_STRING([--enable-cxx17=yes|no],
+			     [enable features that use the C++17 compiler]),
+	      ENABLE_CXX17=$enableval,
+	      ENABLE_CXX17=no)
+
 dnl *************************************************
 dnl check for dependencies
 dnl *************************************************
@@ -147,7 +177,7 @@
 AC_LANG_COMPILER_REQUIRE
 
 dnl
-dnl We use C++11
+dnl We use C++11 or C++17 if enabled
 dnl
 CXX_STANDARD=c++11
 
@@ -238,6 +268,24 @@
 AC_SUBST(DW_LIBS)
 AC_SUBST([ELF_LIBS])
 
+dnl check for libctf presence if CTF code has been enabled by command line
+dnl argument, and then define CTF flag (to build CTF file code) if libctf is
+dnl found on the system
+CTF_LIBS=
+if test x$ENABLE_CTF = xyes; then
+  LIBCTF=
+  AC_CHECK_LIB(ctf, ctf_open, [LIBCTF=yes], [LIBCTF=no])
+  if test x$LIBCTF = xyes; then
+    AC_MSG_NOTICE([activating CTF code])
+    AC_DEFINE([WITH_CTF], 1,
+	     [Defined if user enables and system has the libctf library])
+    CTF_LIBS=-lctf
+  else
+    AC_MSG_NOTICE([CTF enabled but no libctf found])
+    ENABLE_CTF=no
+  fi
+fi
+
 dnl Check for dependency: libxml
 LIBXML2_VERSION=2.6.22
 PKG_CHECK_MODULES(XML, libxml-2.0 >= $LIBXML2_VERSION)
@@ -273,23 +321,40 @@
   fi
 fi
 
-if test x$ENABLE_RPM = xyes -a x$ENABLE_RPM415 = xauto; then
-   rpmversion=$(rpm --version | sed "s/RPM version //")
-   AC_MSG_NOTICE([detected rpm version: $rpmversion])
-   if [[[ "$rpmversion" > "4.14.0" ]]]; then
-      ENABLE_RPM415=yes
-   else
-      ENABLE_RPM415=no
-   fi
+dnl Point to a rpm/zstd file, that is:
+dnl     $ rpm -qp --qf '%{PAYLOADCOMPRESSOR}\n' [rpm_zstd_file]
+dnl     zstd
+m4_define([rpm_zstd_file], [tests/data/test-diff-pkg/mesa-libGLU-9.0.1-3.fc33.x86_64.rpm])
+AC_CONFIG_SRCDIR([rpm_zstd_file])
+if test x$ENABLE_RPM_ZSTD = xyes -o x$ENABLE_RPM_ZSTD = xauto; then
+  if test x$ENABLE_RPM = xno; then
+    if test x$ENABLE_RPM_ZSTD = xyes; then
+      AC_MSG_ERROR([rpm/zstd support needs rpm support])
+    fi
+    ENABLE_RPM_ZSTD=n/a
+  else
+    AC_MSG_CHECKING([for rpm/zstd support])
+    rpm2cpio > /dev/null 2>&AS_MESSAGE_LOG_FD "$srcdir"/rpm_zstd_file
+    if test $? -eq 0; then
+      enable_rpm_zstd=yes
+    else
+      enable_rpm_zstd=no
+    fi
+    AC_MSG_RESULT([$enable_rpm_zstd])
+    if test x$ENABLE_RPM_ZSTD:$enable_rpm_zstd = xyes:no; then
+      AC_MSG_ERROR([rpm/zstd support not available])
+    fi
+    ENABLE_RPM_ZSTD=$enable_rpm_zstd
+  fi
 fi
 
 if test x$ENABLE_RPM = xyes; then
    AC_DEFINE([WITH_RPM], 1, [compile the rpm package support in abipkgdiff])
    AC_MSG_NOTICE([rpm support in abipkgdiff is enabled]);
 
-   if test x$ENABLE_RPM415 = xyes; then
-      AC_DEFINE([WITH_RPM_4_15], 1, [has RPM 4.15 at least])
-      AC_MSG_NOTICE([rpm 4.15 support in abipkgdiff tests is enabled])
+   if test x$ENABLE_RPM_ZSTD = xyes; then
+      AC_DEFINE([WITH_RPM_ZSTD], 1, [has rpm/zstd support])
+      AC_MSG_NOTICE([rpm/zstd in abipkgdiff testing is enabled])
    fi
 else
    AC_MSG_NOTICE([rpm support in abipkgdiff is disabled]);
@@ -297,6 +362,28 @@
 
 AM_CONDITIONAL(ENABLE_RPM, test x$ENABLE_RPM = xyes)
 
+dnl enable the debugging of self comparison when doing abidw --debug-abidiff <binary>
+if test x$ENABLE_DEBUG_SELF_COMPARISON = xyes; then
+  AC_DEFINE([WITH_DEBUG_SELF_COMPARISON], 1, [compile support of debugging abidw --abidiff])
+  AC_MSG_NOTICE([support of debugging self comparison is enabled])
+else
+  AC_MSG_NOTICE([support of debugging self comparison is disabled])
+fi
+
+AM_CONDITIONAL(ENABLE_DEBUG_SELF_COMPARISON, test x$ENABLE_DEBUG_SELF_COMPARISON = xyes)
+
+dnl enable the debugging of type canonicalization when doing abidw --debug-tc <binary>
+if test x$ENABLE_DEBUG_TYPE_CANONICALIZATION = xyes; then
+   AC_DEFINE([WITH_DEBUG_TYPE_CANONICALIZATION],
+	     1,
+	     [compile support of debugging type canonicalization while using abidw --debug-tc])
+   AC_MSG_NOTICE([support of debugging type canonicalization is enabled])
+else
+   AC_MSG_NOTICE([support of debugging type canonicalization is disabled])
+fi
+
+AM_CONDITIONAL(ENABLE_DEBUG_TYPE_CANONICALIZATION, test x$ENABLE_DEBUG_TYPE_CANONICALIZATION = xyes)
+
 dnl Check for the dpkg program
 if test x$ENABLE_DEB = xauto -o x$ENABLE_DEB = xyes; then
    AC_CHECK_PROG(HAS_DPKG, dpkg, yes, no)
@@ -452,11 +539,10 @@
   AC_PATH_PROG(WGET, wget, no)
 
   if test x$WGET = xno; then
-    ENABLE_FEDABIPKGDIFF=no
+    MISSING_FEDABIPKGDIFF_DEP=yes
     if test x$MISSING_FEDABIPKGDIFF_DEP_FATAL = xyes; then
       AC_MSG_ERROR(could not find the wget program)
     else
-      MISSING_FEDABIPKGDIFF_DEP=yes
       AC_MSG_NOTICE([could not find the wget program])
       AC_MSG_NOTICE([disabling fedabipkgdiff as a result])
     fi
@@ -486,47 +572,53 @@
    argparse logging os re subprocess sys $URLPARSE_MODULE \
    xdg koji mock rpm imp tempfile mimetypes shutil six"
 
-  if test x$ENABLE_FEDABIPKGDIFF != xno; then
-    AX_CHECK_PYTHON_MODULES([$REQUIRED_PYTHON_MODULES_FOR_FEDABIPKGDIFF],
-			    [$PYTHON],
-			    [FOUND_ALL_PYTHON_MODULES=yes],
-			    [FOUND_ALL_PYTHON_MODULES=no])
+  AX_CHECK_PYTHON_MODULES([$REQUIRED_PYTHON_MODULES_FOR_FEDABIPKGDIFF],
+			  [$PYTHON],
+			  [FOUND_ALL_PYTHON_MODULES=yes],
+			  [FOUND_ALL_PYTHON_MODULES=no])
 
-    if test x$FOUND_ALL_PYTHON_MODULES = xno; then
-       MISSING_FEDABIPKGDIFF_DEP=yes
-       if test x$MISSING_FEDABIPKGDIFF_DEP_FATAL = xyes; then
-         AC_MSG_ERROR([missing python modules: $MISSING_PYTHON_MODULES]);
-       else
-         AC_MSG_NOTICE([missing python modules: $MISSING_PYTHON_MODULES])
-         AC_MSG_NOTICE([disabling fedabipkgdiff as a result])
-       fi
-       ENABLE_FEDABIPKGDIFF=no
+  if test x$FOUND_ALL_PYTHON_MODULES = xno; then
+    MISSING_FEDABIPKGDIFF_DEP=yes
+    if test x$MISSING_FEDABIPKGDIFF_DEP_FATAL = xyes; then
+      AC_MSG_ERROR([missing python modules: $MISSING_PYTHON_MODULES]);
     else
-	# On some old platforms, the koji client object doesn't have
-	# the required .read_config method.  Alas, that module doesn't
-	# have any __version__ string either.  So we do as well as we
-	# can to try and detect that case and disable fedabipkgdiff if
-	# necessary.
-        AC_MSG_CHECKING([checking if koji client is recent enough ...])
-	$PYTHON -c "
-import koji
-koji.read_config('koji')"
-	if test $? -eq 0; then
-	   koji_version_check_ok=yes
-	else
-	   koji_version_check_ok=no
-	fi
-
-	if test x$koji_version_check_ok = xno; then
-	  AC_MSG_RESULT([no, disabling fedpkgdiff])
-	  MISSING_FEDABIPKGDIFF_DEP=yes
-	else
-          AC_MSG_RESULT(yes)
-       fi
-       if test x$MISSING_FEDABIPKGDIFF_DEP = xno; then
-         ENABLE_FEDABIPKGDIFF=yes
-       fi
+      AC_MSG_NOTICE([missing python modules: $MISSING_PYTHON_MODULES])
+      AC_MSG_NOTICE([disabling fedabipkgdiff as a result])
     fi
+  else
+    # On some old platforms, the koji client object doesn't have
+    # the required .read_config method.  Alas, that module doesn't
+    # have any __version__ string either.  So we do as well as we
+    # can to try and detect that case and disable fedabipkgdiff if
+    # necessary.
+    AC_MSG_CHECKING([if koji client is recent enough])
+    $PYTHON 2>&AS_MESSAGE_LOG_FD -c "
+import koji
+try:
+    koji.read_config('koji')
+except koji.ConfigurationError:
+    # See 'tools/fedabipkgdiff'.
+    pass"
+    if test $? -eq 0; then
+      koji_version_check_ok=yes
+    else
+      koji_version_check_ok=no
+    fi
+    AC_MSG_RESULT([$koji_version_check_ok])
+    if test x$koji_version_check_ok = xno; then
+      MISSING_FEDABIPKGDIFF_DEP=yes
+      if test x$MISSING_FEDABIPKGDIFF_DEP_FATAL = xyes; then
+        AC_MSG_ERROR([unsuitable koji client])
+      else
+	AC_MSG_WARN([disabling fedabipkgdiff])
+      fi
+    fi
+  fi
+
+  if test x$MISSING_FEDABIPKGDIFF_DEP = xno; then
+    ENABLE_FEDABIPKGDIFF=yes
+  else
+    ENABLE_FEDABIPKGDIFF=no
   fi
 fi
 
@@ -575,9 +667,15 @@
 
 AX_VALGRIND_CHECK
 
+dnl Handle conditional use of a C++17 compiler
+if test x$ENABLE_CXX17 = xyes; then
+   CXX_STANDARD=c++17
+fi
+AM_CONDITIONAL(ENABLE_CXX17, test x$ENABLE_CXX17 = xyes)
+
 dnl Set the list of libraries libabigail depends on
 
-DEPS_LIBS="$XML_LIBS $ELF_LIBS $DW_LIBS"
+DEPS_LIBS="$XML_LIBS $ELF_LIBS $DW_LIBS $CTF_LIBS"
 AC_SUBST(DEPS_LIBS)
 
 if test x$ABIGAIL_DEVEL != x; then
@@ -615,6 +713,10 @@
     CXXFLAGS="$CXXFLAGS -fsanitize=undefined"
 fi
 
+dnl Set a few Automake conditionals
+
+AM_CONDITIONAL([CTF_READER],[test "x$ENABLE_CTF" = "xyes"])
+
 dnl Set the level of C++ standard we use.
 CXXFLAGS="$CXXFLAGS -std=$CXX_STANDARD"
 
@@ -913,12 +1015,15 @@
     C++ standard level                             : ${CXX_STANDARD}
     libdw has the dwarf_getalt function            : ${FOUND_DWARF_GETALT_IN_LIBDW}
     Enable rpm support in abipkgdiff               : ${ENABLE_RPM}
-    Enable rpm 4.15 support in abipkgdiff tests    : ${ENABLE_RPM415}
+    Enable rpm/zstd in abipkgdiff testing          : ${ENABLE_RPM_ZSTD}
+    Enable self comparison debugging               : ${ENABLE_DEBUG_SELF_COMPARISON}
+    Enable type canonicalization debugging         : ${ENABLE_DEBUG_TYPE_CANONICALIZATION}
     Enable deb support in abipkgdiff               : ${ENABLE_DEB}
     Enable GNU tar archive support in abipkgdiff   : ${ENABLE_TAR}
     Enable bash completion	                   : ${ENABLE_BASH_COMPLETION}
     Enable fedabipkgdiff                           : ${ENABLE_FEDABIPKGDIFF}
     Enable python 3				   : ${ENABLE_PYTHON3}
+    Enable CTF front-end                           : ${ENABLE_CTF}
     Enable running tests under Valgrind            : ${enable_valgrind}
     Enable build with -fsanitize=address    	   : ${ENABLE_ASAN}
     Enable build with -fsanitize=memory    	   : ${ENABLE_MSAN}
diff --git a/doc/api/libabigail.doxy b/doc/api/libabigail.doxy
index e3136dd..33f0eb4 100644
--- a/doc/api/libabigail.doxy
+++ b/doc/api/libabigail.doxy
@@ -683,7 +683,11 @@
 # directories like "/usr/src/myproject". Separate the files or directories
 # with spaces.
 
-INPUT                  =  LIBABIGAIL_INPUT/src LIBABIGAIL_INPUT/include/
+INPUT                  =  LIBABIGAIL_INPUT/src \
+                          LIBABIGAIL_INPUT/include \
+                          LIBABIGAIL_INPUT/tests/test-read-common.cc \
+                          LIBABIGAIL_INPUT/tests/test-read-common.h
+
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
diff --git a/doc/manuals/abidiff.rst b/doc/manuals/abidiff.rst
index 74c3ebf..b37ed17 100644
--- a/doc/manuals/abidiff.rst
+++ b/doc/manuals/abidiff.rst
@@ -63,6 +63,15 @@
 
     Display a short help about the command and exit.
 
+  * ``--debug``
+
+    In this mode, error messages are emitted for types which fail type canonicalization.
+
+    This is an optional ebugging and sanity check option.  To enable
+    it the libabigail package needs to be configured with
+    the --enable-debug-self-comparison option.
+
+
   * ``--version | -v``
 
     Display the version of the program and exit.
@@ -491,6 +500,11 @@
     changes.  Added or removed functions and variables do not have any
     diff nodes tree associated to them.
 
+  * ``--ctf``
+
+    When comparing binaries, extract ABI information from CTF debug
+    information, if present.
+
   * ``--stats``
 
     Emit statistics about various internal things.
diff --git a/doc/manuals/abidw.rst b/doc/manuals/abidw.rst
index 4af497b..bdd6204 100644
--- a/doc/manuals/abidw.rst
+++ b/doc/manuals/abidw.rst
@@ -5,11 +5,11 @@
 
 abidw reads a shared library in `ELF`_ format and emits an XML
 representation of its ABI to standard output.  The emitted
-representation includes all the globally defined functions and
-variables, along with a complete representation of their types.  It
-also includes a representation of the globally defined ELF symbols of
-the file.  The input shared library must contain associated debug
-information in `DWARF`_ format.
+representation format, named ``ABIXML``, includes all the globally
+defined functions and variables, along with a complete representation
+of their types.  It also includes a representation of the globally
+defined ELF symbols of the file.  The input shared library must
+contain associated debug information in `DWARF`_ format.
 
 When given the ``--linux-tree`` option, this program can also handle a
 Linux kernel tree.  That is, a directory tree that contains both the
@@ -39,6 +39,10 @@
 
     Display the version of the program and exit.
 
+  * `--abixml-version`
+
+    Display the version of the ABIXML format emitted by this program and exit.
+
   * ``--debug-info-dir | -d`` <*dir-path*>
 
     In cases where the debug info for *path-to-elf-file* is in a
@@ -167,13 +171,6 @@
     representation build by Libabigail to represent the ABI and will
     not end up in the abi XML file.
 
-  * ``--merge-translation-units``
-
-    With this option translation units for the same language (and
-    address size) will be merged together as if the functions,
-    variables and types were all defined together.  Note that this
-    also drops the compilation paths used.
-
   * ``--no-linux-kernel-mode``
 
     Without this option, if abipkgiff detects that the binaries it is
@@ -248,6 +245,34 @@
 
     This is a debugging and sanity check option.
 
+    *  ``--debug-abidiff``
+
+    Same as ``--abidiff`` but in debug mode.  In this mode, error
+    messages are emitted for types which fail type canonicalization.
+
+    This is an optional debugging and sanity check option.  To enable
+    it the libabigail package needs to be configured with
+    the --enable-debug-self-comparison option.
+
+    *  ``--debug-type-canonicalization | --debug-tc``
+
+    Debug the type canonicalization process.  This is done by using
+    structural and canonical equality when canonicalizing every single
+    type.  Structural and canonical equality should yield the same
+    result.  If they don't yield the same result for a given type,
+    then it means that the canonicalization of that type went wrong.
+    In that case, an error message is emitted and the execution of the
+    program is aborted.
+
+    This option is available only if the package was configured with
+    the --enable-debug-type-canonicalization option.
+
+
+  * ``--ctf``
+
+    Extract ABI information from CTF debug information, if present in
+    the given object.
+
   *  ``--annotate``
 
     Annotate the ABIXML output with comments above most elements.  The
diff --git a/doc/manuals/abilint.rst b/doc/manuals/abilint.rst
index 4cc0b42..4213a22 100644
--- a/doc/manuals/abilint.rst
+++ b/doc/manuals/abilint.rst
@@ -90,5 +90,10 @@
 
     Expect the input XML to represent a single translation unit.
 
+  * ``--ctf``
+
+    Extract ABI information from CTF debug information, if present in
+    the given object.
+
 .. _ELF: http://en.wikipedia.org/wiki/Executable_and_Linkable_Format
 .. _DWARF: http://www.dwarfstd.org
diff --git a/doc/manuals/libabigail-concepts.rst b/doc/manuals/libabigail-concepts.rst
index 2ad3634..c30e87e 100644
--- a/doc/manuals/libabigail-concepts.rst
+++ b/doc/manuals/libabigail-concepts.rst
@@ -433,7 +433,11 @@
 
  Suppresses change reports involving a type which has at least one
  data member inserted at an offset specified by the property value
- ``offset-in-bit``.  The value ``offset-in-bit`` is either:
+ ``offset-in-bit``.  Please note that if a type has a change in which
+ at least one of its data members is removed or its size is reduced,
+ the type will *NOT* be suppressed by the evaluation of this property.
+
+ The value ``offset-in-bit`` is either:
 
 	 - an integer value, expressed in bits, which denotes the
 	   offset of the insertion point of the data member, starting
@@ -468,11 +472,14 @@
    ``has_data_member_inserted_between`` ``=`` {<``range-begin``>, <``range-end``>}
 
  Suppresses change reports involving a type which has at least one
- data mber inserted at an offset that is comprised in the range
- between range-begin`` and ``range-end``.  Please note that each of
- the lues ``range-begin`` and ``range-end`` can be of the same form as
- the :ref:`has_data_member_inserted_at
- <suppr_has_data_member_inserted_at_label>` property above.
+ data member inserted at an offset that is comprised in the range
+ between ``range-begin`` and ``range-end``.  Please note that each of
+ the values ``range-begin`` and ``range-end`` can be of the same form
+ as the :ref:`has_data_member_inserted_at
+ <suppr_has_data_member_inserted_at_label>` property above.  Please
+ also note that if a type has a change in which at least one of its
+ data members is removed or its size is reduced, the type will *NOT* be
+ suppressed by the evaluation of this property.
 
  Usage examples of this properties are: ::
 
@@ -508,7 +515,10 @@
  long as the system can cope with.  The values of the boundaries of
  the ranges are of the same kind as for the
  :ref:`has_data_member_inserted_at
- <suppr_has_data_member_inserted_at_label>` property above.
+ <suppr_has_data_member_inserted_at_label>` property above.  Please
+ note that if a type has a change in which at least one of its data
+ members is removed or its size is reduced, the type will *NOT* be
+ suppressed by the evaluation of this property.
 
  Another usage example of this property is thus: ::
 
diff --git a/doc/website/mainpage.txt b/doc/website/mainpage.txt
index ee9a15a..8478664 100644
--- a/doc/website/mainpage.txt
+++ b/doc/website/mainpage.txt
@@ -48,14 +48,14 @@
 
 \section license License
 
-The source code of the library is under <a href="http://www.gnu.org/licenses/lgpl.html"> LGPL version 3</a> or later.
+The source code of the library is under the <a href="https://spdx.org/licenses/Apache-2.0.html">Apache version 2 license</a> with the <a href="https://spdx.org/licenses/LLVM-exception.html">LLVM exception</a>.
 
 \section source Getting the source code
 
 You can download compressed tarballs containing the source code of
 Libabigail at http://mirrors.kernel.org/sourceware/libabigail.  The
 latest released version of is source code is
-http://mirrors.kernel.org/sourceware/libabigail/libabigail-1.8.tar.gz.
+http://mirrors.kernel.org/sourceware/libabigail/libabigail-2.0.tar.gz.
 
 You can also get the source code in a read-only manner from our <a
 href="http://sourceware.org/git/gitweb.cgi?p=libabigail.git">Git
diff --git a/include/Makefile.am b/include/Makefile.am
index 0f3b093..b3b9148 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -5,6 +5,7 @@
 abg-ir.h		\
 abg-corpus.h		\
 abg-reader.h		\
+abg-elf-reader-common.h \
 abg-dwarf-reader.h	\
 abg-writer.h		\
 abg-comparison.h	\
@@ -27,4 +28,8 @@
 abg-viz-svg.h		\
 abg-regex.h
 
+if CTF_READER
+pkginclude_HEADERS += abg-ctf-reader.h
+endif
+
 EXTRA_DIST = abg-version.h.in
diff --git a/include/abg-comparison.h b/include/abg-comparison.h
index 2bc2979..0ded53b 100644
--- a/include/abg-comparison.h
+++ b/include/abg-comparison.h
@@ -10,6 +10,7 @@
 
 /// @file
 
+#include <memory>
 #include <ostream>
 #include <unordered_map>
 #include <unordered_set>
@@ -502,13 +503,14 @@
 class diff_maps
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
 
   diff_maps();
 
+  ~diff_maps();
+
   const string_diff_ptr_map&
   get_type_decl_diff_map() const;
 
@@ -598,7 +600,7 @@
 class diff_context
 {
   struct priv;
-  shared_ptr<priv> priv_;
+  std::unique_ptr<priv> priv_;
 
   diff_sptr
   has_diff_for(const type_or_decl_base_sptr first,
@@ -638,6 +640,8 @@
 public:
   diff_context();
 
+  ~diff_context();
+
   void
   set_corpus_diff(const corpus_diff_sptr&);
 
@@ -901,14 +905,12 @@
 {
   friend class diff_context;
 
-  struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
   // Forbidden
   diff();
 
 protected:
-  priv_sptr priv_;
+  struct priv;
+  std::unique_ptr<priv> priv_;
 
   diff(type_or_decl_base_sptr first_subject,
        type_or_decl_base_sptr second_subject);
@@ -1069,9 +1071,7 @@
 class type_diff_base : public diff
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   type_diff_base();
 
@@ -1092,9 +1092,7 @@
 class decl_diff_base : public diff
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 protected:
   decl_diff_base(decl_base_sptr	first_subject,
@@ -1122,8 +1120,7 @@
 class distinct_diff : public diff
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 protected:
   distinct_diff(type_or_decl_base_sptr first,
@@ -1178,8 +1175,7 @@
 class var_diff : public decl_diff_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 protected:
   var_diff(var_decl_sptr first,
@@ -1233,7 +1229,7 @@
 class pointer_diff : public type_diff_base
 {
   struct priv;
-  shared_ptr<priv> priv_;
+  std::unique_ptr<priv> priv_;
 
 protected:
   pointer_diff(pointer_type_def_sptr	first,
@@ -1293,7 +1289,7 @@
 class reference_diff : public type_diff_base
 {
   struct priv;
-  shared_ptr<priv> priv_;
+  std::unique_ptr<priv> priv_;
 
 protected:
   reference_diff(const reference_type_def_sptr	first,
@@ -1353,7 +1349,7 @@
 class array_diff : public type_diff_base
 {
   struct priv;
-  shared_ptr<priv> priv_;
+  std::unique_ptr<priv> priv_;
 
 protected:
   array_diff(const array_type_def_sptr	first,
@@ -1410,8 +1406,7 @@
 class qualified_type_diff : public type_diff_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 protected:
   qualified_type_diff(qualified_type_def_sptr	first,
@@ -1471,8 +1466,7 @@
 class enum_diff : public type_diff_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   void
   clear_lookup_tables();
@@ -1542,8 +1536,8 @@
 {
 protected:
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  typedef std::unique_ptr<priv> priv_ptr;
+  priv_ptr priv_;
 
   void
   clear_lookup_tables(void);
@@ -1567,7 +1561,7 @@
 
 public:
 
-  const class_or_union_diff::priv_sptr&
+  const class_or_union_diff::priv_ptr&
   get_priv() const;
 
   //TODO: add change of the name of the type.
@@ -1662,10 +1656,10 @@
 class class_diff : public class_or_union_diff
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  typedef std::unique_ptr<priv> priv_ptr;
+  priv_ptr priv_;
 
-  const priv_sptr& get_priv()const;
+  const priv_ptr& get_priv()const;
 
   void
   clear_lookup_tables(void);
@@ -1797,7 +1791,7 @@
 class base_diff : public diff
 {
   struct priv;
-  shared_ptr<priv> priv_;
+  std::unique_ptr<priv> priv_;
 
 protected:
   base_diff(class_decl::base_spec_sptr	first,
@@ -1856,7 +1850,7 @@
 class scope_diff : public diff
 {
   struct priv;
-  shared_ptr<priv> priv_;
+  std::unique_ptr<priv> priv_;
 
   bool
   lookup_tables_empty() const;
@@ -1964,9 +1958,7 @@
 class fn_parm_diff : public decl_diff_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   virtual void
   finish_diff_type();
@@ -2021,8 +2013,7 @@
 class function_type_diff: public type_diff_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   void
   ensure_lookup_tables_populated();
@@ -2099,7 +2090,7 @@
 class function_decl_diff : public decl_diff_base
 {
   struct priv;
-  shared_ptr<priv> priv_;
+  std::unique_ptr<priv> priv_;
 
   void
   ensure_lookup_tables_populated();
@@ -2207,7 +2198,7 @@
 class typedef_diff : public type_diff_base
 {
   struct priv;
-  shared_ptr<priv> priv_;
+  std::unique_ptr<priv> priv_;
 
   typedef_diff();
 
@@ -2272,8 +2263,7 @@
 class translation_unit_diff : public scope_diff
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 protected:
   translation_unit_diff(translation_unit_sptr	first,
@@ -2312,8 +2302,7 @@
 class corpus_diff
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 protected:
   corpus_diff(corpus_sptr	first,
@@ -2327,7 +2316,7 @@
 
   class diff_stats;
 
-  virtual ~corpus_diff() {}
+  virtual ~corpus_diff();
 
   /// A convenience typedef for a shared pointer to @ref diff_stats
   typedef shared_ptr<diff_stats> diff_stats_sptr;
@@ -2485,9 +2474,7 @@
 class corpus_diff::diff_stats
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   diff_stats();
 
@@ -2634,14 +2621,13 @@
 {
 protected:
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
 
   diff_node_visitor();
 
-  virtual ~diff_node_visitor() {}
+  virtual ~diff_node_visitor();
 
   diff_node_visitor(visiting_kind k);
 
diff --git a/include/abg-config.h b/include/abg-config.h
index f16f05b..9f86d48 100644
--- a/include/abg-config.h
+++ b/include/abg-config.h
@@ -58,20 +58,14 @@
 
 extern "C"
 {
-  /// Return the relevant version numbers of the library.
-  ///
-  /// \param maj the major version number of the library.
-  ///
-  /// \param min the minor version number of the library.
-  ///
-  /// \param rev the revision version number of the library.
-  ///
-  /// \param suf the version suffix of the library.
   void
   abigail_get_library_version(std::string& maj,
 			      std::string& min,
 			      std::string& rev,
 			      std::string& suf);
+
+  void
+  abigail_get_abixml_version(std::string& maj, std::string& min);
 }
 
 }//end namespace abigail
diff --git a/include/abg-corpus.h b/include/abg-corpus.h
index 287f770..652a829 100644
--- a/include/abg-corpus.h
+++ b/include/abg-corpus.h
@@ -24,10 +24,6 @@
 class corpus
 {
 public:
-  struct priv;
-  /// Convenience typedef for shared_ptr of corpus::priv
-  typedef shared_ptr<priv> priv_sptr;
-
   /// A convenience typedef for std::vector<string>.
   typedef vector<string> strings_type;
 
@@ -50,6 +46,7 @@
     ARTIFICIAL_ORIGIN = 0,
     NATIVE_XML_ORIGIN,
     DWARF_ORIGIN,
+    CTF_ORIGIN,
     LINUX_KERNEL_BINARY_ORIGIN
   };
 
@@ -60,11 +57,12 @@
   void init_format_version();
 
 public:
-  shared_ptr<priv> priv_;
+  struct priv;
+  std::unique_ptr<priv> priv_;
 
   corpus(ir::environment*, const string& path= "");
 
-  virtual ~corpus() {}
+  virtual ~corpus();
 
   const environment*
   get_environment() const;
@@ -290,21 +288,14 @@
 /// parameters needed.
 class corpus::exported_decls_builder
 {
-public:
   class priv;
-
-  /// Convenience typedef for shared_ptr<priv>
-  typedef shared_ptr<priv> priv_sptr;
-
-  friend class corpus;
-
-private:
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbid default construction.
   exported_decls_builder();
 
 public:
+  friend class corpus;
 
   exported_decls_builder(functions& fns,
 			 variables& vars,
@@ -344,9 +335,7 @@
 class corpus_group : public corpus
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbid copy
   corpus_group(const corpus_group&);
diff --git a/include/abg-ctf-reader.h b/include/abg-ctf-reader.h
new file mode 100644
index 0000000..3343f0d
--- /dev/null
+++ b/include/abg-ctf-reader.h
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// -*- Mode: C++ -*-
+//
+// Copyright (C) 2021 Oracle, Inc.
+//
+// Author: Jose E. Marchesi
+
+/// @file
+///
+/// This file contains the declarations of the entry points to
+/// de-serialize an instance of @ref abigail::corpus from a file in
+/// elf format, containing CTF information.
+
+#ifndef __ABG_CTF_READER_H__
+#define __ABG_CTF_READER_H__
+
+#include <ostream>
+#include "abg-corpus.h"
+#include "abg-suppression.h"
+#include "abg-elf-reader-common.h"
+
+namespace abigail
+{
+namespace ctf_reader
+{
+
+class read_context;
+typedef shared_ptr<read_context> read_context_sptr;
+
+read_context_sptr
+create_read_context(const std::string& elf_path,
+                    ir::environment *env);
+corpus_sptr
+read_corpus(read_context *ctxt, elf_reader::status& status);
+corpus_sptr
+read_corpus(const read_context_sptr &ctxt, elf_reader::status &status);
+} // end namespace ctf_reader
+} // end namespace abigail
+
+#endif // ! __ABG_CTF_READER_H__
diff --git a/include/abg-dwarf-reader.h b/include/abg-dwarf-reader.h
index 13a5d5e..4c2de77 100644
--- a/include/abg-dwarf-reader.h
+++ b/include/abg-dwarf-reader.h
@@ -18,6 +18,7 @@
 #include <elfutils/libdwfl.h>
 #include "abg-corpus.h"
 #include "abg-suppression.h"
+#include "abg-elf-reader-common.h"
 
 namespace abigail
 {
@@ -28,42 +29,6 @@
 
 using namespace abigail::ir;
 
-/// The status of the @ref read_corpus_from_elf() call.
-enum status
-{
-  /// The status is in an unknown state
-  STATUS_UNKNOWN = 0,
-
-  /// This status is for when the call went OK.
-  STATUS_OK = 1,
-
-  /// This status is for when the debug info could not be read.
-  STATUS_DEBUG_INFO_NOT_FOUND = 1 << 1,
-
-  /// This status is for when the alternate debug info could not be
-  /// found.
-  STATUS_ALT_DEBUG_INFO_NOT_FOUND = 1 << 2,
-
-  /// This status is for when the symbols of the ELF binaries could
-  /// not be read.
-  STATUS_NO_SYMBOLS_FOUND = 1 << 3,
-};
-
-string
-status_to_diagnostic_string(status s);
-
-status
-operator|(status, status);
-
-status
-operator&(status, status);
-
-status&
-operator|=(status&, status);
-
-status&
-operator&=(status&, status);
-
 /// The kind of ELF file we are looking at.
 enum elf_type
 {
@@ -111,17 +76,17 @@
 set_read_context_corpus_group(read_context& ctxt, corpus_group_sptr& group);
 
 corpus_sptr
-read_corpus_from_elf(read_context& ctxt, status& stat);
+read_corpus_from_elf(read_context& ctxt, elf_reader::status& stat);
 
 corpus_sptr
 read_corpus_from_elf(const std::string& elf_path,
 		     const vector<char**>& debug_info_root_paths,
 		     ir::environment*	environment,
 		     bool		load_all_types,
-		     status&);
+		     elf_reader::status&);
 
 corpus_sptr
-read_and_add_corpus_to_group_from_elf(read_context&, corpus_group&, status&);
+read_and_add_corpus_to_group_from_elf(read_context&, corpus_group&, elf_reader::status&);
 
 bool
 lookup_symbol_from_elf(const environment*		env,
@@ -140,12 +105,12 @@
 refers_to_alt_debug_info(const read_context&	ctxt,
 			 string&		alt_di_path);
 
-status
+elf_reader::status
 has_alt_debug_info(read_context&	ctxt,
 		   bool&		has_alt_di,
 		   string&		alt_debug_info_path);
 
-status
+elf_reader::status
 has_alt_debug_info(const string&	elf_path,
 		   char**		debug_info_root_path,
 		   bool&		has_alt_di,
@@ -178,10 +143,6 @@
 			bool f);
 
 void
-set_merge_translation_units(read_context& ctxt,
-			    bool f);
-
-void
 set_do_log(read_context& ctxt, bool f);
 
 void
diff --git a/include/abg-elf-reader-common.h b/include/abg-elf-reader-common.h
new file mode 100644
index 0000000..991654a
--- /dev/null
+++ b/include/abg-elf-reader-common.h
@@ -0,0 +1,70 @@
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// -*- Mode: C++ -*-
+//
+// Copyright (C) 2013-2021 Oracle, Inc.
+//
+// Author: Jose E. Marchesi
+
+/// @file
+///
+/// This file contains declarations implementing the different status
+/// in which a corpus read from an ELF file can result.  It is used by
+/// the readers based on ELF files, such as DWARF and CTF.
+///
+/// More generally, this file contains declarations related to
+/// facilities shared by the various readers that handle the ELF
+/// format, e.g, the DWARF and CTF realder.
+
+#ifndef __ABG_ELF_READER_COMMON_H__
+#define __ABG_ELF_READER_COMMON_H__
+
+#include <string>
+
+namespace abigail
+{
+
+/// The namespace for an ELF based reader.
+namespace elf_reader
+{
+
+/// The status of the @ref read_corpus_from_elf() call.
+enum status
+{
+  /// The status is in an unknown state
+  STATUS_UNKNOWN = 0,
+
+  /// This status is for when the call went OK.
+  STATUS_OK = 1,
+
+  /// This status is for when the debug info could not be read.
+  STATUS_DEBUG_INFO_NOT_FOUND = 1 << 1,
+
+  /// This status is for when the alternate debug info could not be
+  /// found.
+  STATUS_ALT_DEBUG_INFO_NOT_FOUND = 1 << 2,
+
+  /// This status is for when the symbols of the ELF binaries could
+  /// not be read.
+  STATUS_NO_SYMBOLS_FOUND = 1 << 3,
+};
+
+std::string
+status_to_diagnostic_string(status s);
+
+status
+operator|(status, status);
+
+status
+operator&(status, status);
+
+status&
+operator|=(status&, status);
+
+status&
+operator&=(status&, status);
+
+}// end namespace elf_reader
+
+}// end namespace abigail
+
+#endif //__ABG_ELF_READER_COMMON_H__
diff --git a/include/abg-fwd.h b/include/abg-fwd.h
index cb03b54..4c13990 100644
--- a/include/abg-fwd.h
+++ b/include/abg-fwd.h
@@ -395,7 +395,7 @@
 is_type(const type_or_decl_base_sptr& tod);
 
 bool
-is_anonymous_type(type_base*);
+is_anonymous_type(const type_base*);
 
 bool
 is_anonymous_type(const type_base_sptr&);
@@ -490,9 +490,6 @@
 qualified_type_def_sptr
 is_qualified_type(const type_or_decl_base_sptr&);
 
-type_base_sptr
-look_through_no_op_qualified_type(const shared_ptr<type_base>& t);
-
 function_type_sptr
 is_function_type(const type_or_decl_base_sptr&);
 
@@ -512,28 +509,19 @@
 is_method_type(type_or_decl_base*);
 
 class_or_union_sptr
-look_through_decl_only_class(const class_or_union&);
-
-class_or_union_sptr
 look_through_decl_only_class(class_or_union_sptr);
 
 class_or_union*
 look_through_decl_only_class(class_or_union*);
 
 enum_type_decl_sptr
-look_through_decl_only_enum(const enum_type_decl&);
-
-enum_type_decl_sptr
 look_through_decl_only_enum(enum_type_decl_sptr);
 
-decl_base_sptr
-look_through_decl_only(const decl_base&);
-
 decl_base*
 look_through_decl_only(decl_base*);
 
 decl_base_sptr
-look_through_decl_only(const decl_base_sptr&);
+look_through_decl_only(decl_base_sptr);
 
 var_decl*
 is_var_decl(const type_or_decl_base*);
@@ -642,6 +630,9 @@
 const var_decl_sptr
 get_next_data_member(const class_or_union_sptr&, const var_decl_sptr&);
 
+var_decl_sptr
+get_last_data_member(const class_or_union_sptr&);
+
 bool
 is_anonymous_data_member(const decl_base&);
 
@@ -679,6 +670,12 @@
 class_or_union_sptr
 anonymous_data_member_to_class_or_union(const var_decl_sptr&);
 
+bool
+scope_anonymous_or_typedef_named(const decl_base&);
+
+bool
+is_anonymous_or_typedef_named(const decl_base&);
+
 const class_or_union_sptr
 data_member_has_anonymous_type(const var_decl& d);
 
@@ -718,6 +715,11 @@
 uint64_t
 get_absolute_data_member_offset(const var_decl&);
 
+bool
+get_next_data_member_offset(const class_or_union_sptr&,
+			    const var_decl_sptr&,
+			    uint64_t&);
+
 uint64_t
 get_var_size_in_bits(const var_decl_sptr&);
 
@@ -810,6 +812,9 @@
 type_base_sptr
 strip_typedef(const type_base_sptr);
 
+decl_base_sptr
+strip_useless_const_qualification(const qualified_type_def_sptr t);
+
 type_base_sptr
 peel_typedef_type(const type_base_sptr&);
 
@@ -999,6 +1004,33 @@
 				       bool internal,
 				       bool qualified_name = true);
 
+string
+get_debug_representation(const type_or_decl_base*);
+
+var_decl_sptr
+get_data_member(class_or_union *, const char*);
+
+var_decl_sptr
+get_data_member(type_base *clazz, const char* member_name);
+
+const location&
+get_natural_or_artificial_location(const decl_base*);
+
+const location&
+get_artificial_or_natural_location(const decl_base*);
+
+type_or_decl_base*
+debug(const type_or_decl_base* artifact);
+
+type_base*
+debug(const type_base* artifact);
+
+decl_base*
+debug(const decl_base* artifact);
+
+bool
+debug_equals(const type_or_decl_base *l, const type_or_decl_base *r);
+
 bool
 odr_is_relevant(const type_or_decl_base&);
 
@@ -1347,6 +1379,25 @@
 hash_type_or_decl(const type_or_decl_base_sptr &);
 
 bool
+is_non_canonicalized_type(const type_base *);
+
+bool
+is_non_canonicalized_type(const type_base_sptr&);
+
+/// For a given type, return its exemplar type.
+///
+/// For a given type, its exemplar type is either its canonical type
+/// or the canonical type of the definition type of a given
+/// declaration-only type.  If the neither of those two types exist,
+/// then the exemplar type is the given type itself.
+///
+/// @param type the input to consider.
+///
+/// @return the exemplar type.
+type_base*
+get_exemplar_type(const type_base* type);
+
+bool
 function_decl_is_less_than(const function_decl&f, const function_decl &s);
 
 bool
diff --git a/include/abg-ini.h b/include/abg-ini.h
index 4ccb63b..ef46fbc 100644
--- a/include/abg-ini.h
+++ b/include/abg-ini.h
@@ -40,8 +40,7 @@
 class property
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
 
@@ -66,6 +65,9 @@
 /// Base class of propertie values.
 class property_value
 {
+  struct priv;
+  std::unique_ptr<priv> priv_;
+
 public:
   enum value_kind
   {
@@ -75,13 +77,6 @@
     TUPLE_PROPERTY_VALUE = 3,
   };
 
-private:
-  struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
-
-public:
-
   property_value();
   property_value(value_kind);
 
@@ -105,8 +100,7 @@
 class string_property_value : public property_value
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
   string_property_value();
@@ -147,9 +141,7 @@
 class list_property_value : public property_value
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
   list_property_value();
@@ -184,8 +176,7 @@
 class tuple_property_value : public property_value
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
   tuple_property_value(const vector<property_value_sptr>&);
@@ -219,9 +210,7 @@
 class simple_property : public property
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
   simple_property();
@@ -265,9 +254,7 @@
 class list_property : public property
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
   list_property();
@@ -299,9 +286,7 @@
 class tuple_property : public property
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
   tuple_property();
@@ -336,7 +321,7 @@
 class config
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
+  std::unique_ptr<priv> priv_;
 
 public:
   class section;
@@ -349,11 +334,6 @@
   /// A convenience typedef for a vector of @ref property_sptr
   typedef vector<property_sptr> properties_type;
 
-private:
-  priv_sptr priv_;
-
-public:
-
   config();
 
   config(const string& path,
@@ -378,9 +358,7 @@
 class config::section
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbid this
   section();
@@ -455,8 +433,7 @@
 class function_call_expr
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   function_call_expr();
 
diff --git a/include/abg-interned-str.h b/include/abg-interned-str.h
index e25ea56..acd7bdf 100644
--- a/include/abg-interned-str.h
+++ b/include/abg-interned-str.h
@@ -27,7 +27,6 @@
 {
 // Inject some std types into this namespace.
 using std::unordered_set;
-using std::shared_ptr;
 using std::string;
 using std::ostream;
 
@@ -227,9 +226,7 @@
 class interned_string_pool
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
 
diff --git a/include/abg-ir.h b/include/abg-ir.h
index 62c9440..a0ef29b 100644
--- a/include/abg-ir.h
+++ b/include/abg-ir.h
@@ -95,8 +95,8 @@
 // Inject some std types in here.
 using std::unordered_map;
 
-/// A convenience typedef fo r an ordered set of size_t.
-typedef unordered_set<size_t> pointer_set;
+/// A convenience typedef for an unordered set of pointer values
+typedef unordered_set<uintptr_t> pointer_set;
 
 /// Functor to hash a canonical type by using its pointer value.
 struct canonical_type_hash
@@ -134,6 +134,8 @@
 class environment
 {
 public:
+  struct priv;
+  std::unique_ptr<priv> priv_;
 
   /// A convenience typedef for a map of canonical types.  The key is
   /// the pretty representation string of a particular type and the
@@ -142,14 +144,8 @@
   typedef std::unordered_map<string, std::vector<type_base_sptr> >
       canonical_types_map_type;
 
-private:
-  struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
-public:
-
   environment();
+
   virtual ~environment();
 
   canonical_types_map_type&
@@ -183,6 +179,12 @@
   decl_only_class_equals_definition(bool f) const;
 
   bool
+  use_enum_binary_only_equality() const;
+
+  void
+  use_enum_binary_only_equality(bool f) const;
+
+  bool
   is_void_type(const type_base_sptr&) const;
 
   bool
@@ -200,6 +202,47 @@
   const config&
   get_config() const;
 
+#ifdef WITH_DEBUG_SELF_COMPARISON
+  void
+  set_self_comparison_debug_input(const corpus_sptr& corpus);
+
+  void
+  get_self_comparison_debug_inputs(corpus_sptr& first_corpus,
+				   corpus_sptr& second_corpus);
+
+  void
+  self_comparison_debug_is_on(bool);
+
+  bool
+  self_comparison_debug_is_on() const;
+#endif
+
+#ifdef WITH_DEBUG_TYPE_CANONICALIZATION
+  void
+  debug_type_canonicalization_is_on(bool flag);
+
+  bool
+  debug_type_canonicalization_is_on() const;
+#endif
+
+  vector<type_base_sptr>* get_canonical_types(const char* name);
+
+  type_base* get_canonical_type(const char* name, unsigned index);
+
+#ifdef WITH_DEBUG_SELF_COMPARISON
+  unordered_map<string, uintptr_t>&
+  get_type_id_canonical_type_map() const;
+
+  unordered_map<uintptr_t, string>&
+  get_pointer_type_id_map();
+
+  string
+  get_type_id_from_pointer(uintptr_t ptr);
+
+  uintptr_t
+  get_canonical_type_from_type_id(const char*);
+#endif
+
   friend class class_or_union;
   friend class class_decl;
   friend class function_type;
@@ -224,9 +267,16 @@
   // one location manager per translation unit, and the location
   // manager's life time is managed by its translation unit.
   location_manager*	loc_manager_;
+  // Whether the location is artificial.  Being artificial means that
+  // the location wasn't generated by the original emitter of the
+  // metadata (i.e, the compiler if the metadata is debug info).  For
+  // instance, implicit location derived from the position of XML
+  // elements in the abixml file is represented as artificial
+  // locations.
+  bool			is_artificial_;
 
   location(unsigned v, location_manager* m)
-    : value_(v), loc_manager_(m)
+    : value_(v), loc_manager_(m), is_artificial_(false)
   {}
 
   /// Get the location manager to use to decode the value of this
@@ -239,12 +289,45 @@
 
 public:
 
+  /// Test if the location is artificial.
+  ///
+  /// Being artificial means that the location wasn't generated by the
+  /// original emitter of the metadata (i.e, the compiler if the
+  /// metadata is debug info).  For instance, the implicit location
+  /// derived from the position of a given XML element in the abixml
+  /// file is represented as artificial locations.  The same XML
+  /// element might carry a non-artificial (natural?) location that was
+  /// originally emitted by the compiler that generated the original
+  /// debug info the abixml file is derived from.
+  ///
+  /// @return true iff the location is artificial.
+  bool
+  get_is_artificial() const
+  {return is_artificial_;}
+
+  /// Set the artificial-ness of the location.
+  ///
+  /// Being artificial means that the location wasn't generated by the
+  /// original emitter of the metadata (i.e, the compiler if the
+  /// metadata is debug info).  For instance, the implicit location
+  /// derived from the position of a given XML element in the abixml
+  /// file is represented as artificial locations.  The same XML
+  /// element might carry a non-artificial (natural?) location that
+  /// was originally emitted by the compiler that generated the
+  /// original debug info the abixml file is derived from.
+  ///
+  /// @param f the new artificial-ness state.
+  void
+  set_is_artificial(bool f)
+  {is_artificial_ = f;}
+
   /// Copy constructor of the location.
   ///
   /// @param l the location to copy from.
   location(const location& l)
     : value_(l.value_),
-      loc_manager_(l.loc_manager_)
+      loc_manager_(l.loc_manager_),
+      is_artificial_(l.is_artificial_)
   {}
 
   /// Assignment operator of the location.
@@ -255,12 +338,13 @@
   {
     value_ = l.value_;
     loc_manager_ = l.loc_manager_;
+    is_artificial_ = l.is_artificial_;
     return *this;
   }
 
   /// Default constructor for the @ref location type.
   location()
-    : value_(), loc_manager_()
+    : value_(), loc_manager_(), is_artificial_()
   {}
 
   /// Get the value of the location.
@@ -321,14 +405,14 @@
 class location_manager
 {
   struct priv;
-
-  /// Pimpl.
-  shared_ptr<priv> priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
 
   location_manager();
 
+  ~location_manager();
+
   location
   create_new_location(const std::string& fle, size_t lne, size_t col);
 
@@ -461,13 +545,14 @@
 class type_maps
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
 
   type_maps();
 
+  ~type_maps();
+
   bool
   empty() const;
 
@@ -547,12 +632,10 @@
 class translation_unit : public traversable_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbidden
-  translation_unit();
+  translation_unit() = delete;
 
 public:
   /// Convenience typedef for a shared pointer on a @ref global_scope.
@@ -582,7 +665,7 @@
     LANG_Pascal83,
     LANG_Modula2,
     LANG_Java,
-    LANG_PL1,
+    LANG_PLI,
     LANG_UPC,
     LANG_D,
     LANG_Python,
@@ -828,7 +911,7 @@
 
 private:
   struct priv;
-  shared_ptr<priv> priv_;
+  std::unique_ptr<priv> priv_;
 
   elf_symbol();
 
@@ -842,7 +925,6 @@
 	     bool		c,
 	     const version&	ve,
 	     visibility		vi,
-	     bool		is_linux_string_cst = false,
 	     bool		is_in_ksymtab = false,
 	     uint64_t		crc = 0,
 	     bool		is_suppressed = false);
@@ -868,7 +950,6 @@
 	 bool		    c,
 	 const version&	    ve,
 	 visibility	    vi,
-	 bool		    is_linux_string_cst = false,
 	 bool		    is_in_ksymtab = false,
 	 uint64_t	    crc = 0,
 	 bool		    is_suppressed = false);
@@ -885,9 +966,6 @@
   void
   set_index(size_t);
 
-  bool
-  get_is_linux_string_cst() const;
-
   const string&
   get_name() const;
 
@@ -1027,6 +1105,9 @@
 std::ostream&
 operator<<(std::ostream& o, elf_symbol::binding t);
 
+std::ostream&
+operator<<(std::ostream& o, elf_symbol::visibility t);
+
 bool
 string_to_elf_symbol_type(const string&, elf_symbol::type&);
 
@@ -1060,7 +1141,7 @@
 class elf_symbol::version
 {
   struct priv;
-  shared_ptr<priv> priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
   version();
@@ -1070,6 +1151,8 @@
 
   version(const version& v);
 
+  ~version();
+
   operator const string&() const;
 
   const string&
@@ -1232,8 +1315,7 @@
 class type_or_decl_base : public ir_traversable_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  mutable priv_sptr priv_;
+  mutable std::unique_ptr<priv> priv_;
 
   type_or_decl_base();
 
@@ -1304,6 +1386,12 @@
 
   virtual ~type_or_decl_base();
 
+  bool
+  get_is_artificial() const;
+
+  void
+  set_is_artificial(bool);
+
   const environment*
   get_environment() const;
 
@@ -1313,6 +1401,15 @@
   void
   set_environment(const environment*);
 
+  void
+  set_artificial_location(const location &);
+
+  location&
+  get_artificial_location() const;
+
+  bool
+  has_artificial_location() const;
+
   const corpus*
   get_corpus() const;
 
@@ -1546,20 +1643,17 @@
   set_is_anonymous(bool);
 
   bool
-  get_is_artificial() const;
-
-  void
-  set_is_artificial(bool);
-
-  bool
   get_has_anonymous_parent() const;
 
-  void
-  set_has_anonymous_parent(bool f) const;
-
   bool
   get_is_anonymous_or_has_anonymous_parent() const;
 
+  typedef_decl_sptr
+  get_naming_typedef() const;
+
+  void
+  set_naming_typedef(const typedef_decl_sptr&);
+
   const interned_string&
   get_linkage_name() const;
 
@@ -1678,6 +1772,9 @@
 /// A declaration that introduces a scope.
 class scope_decl : public virtual decl_base
 {
+  struct priv;
+  std::unique_ptr<priv> priv_;
+
 public:
 
   /// Convenience typedef for a vector of @ref decl_base_sptr.
@@ -1686,13 +1783,6 @@
   typedef std::vector<function_type_sptr >	function_types;
   /// Convenience typedef for a vector of @ref scope_decl_sptr.
   typedef std::vector<scope_decl_sptr>	scopes;
-  /// The type of the private data of @ref scope_decl.
-  struct priv;
-  /// A convenience typedef for a shared pointer to scope_decl::priv.
-  typedef shared_ptr<priv> priv_sptr;
-
-private:
-  priv_sptr priv_;
 
   scope_decl();
 
@@ -2064,8 +2154,7 @@
 class qualified_type_def : public virtual type_base, public virtual decl_base
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbidden.
   qualified_type_def();
@@ -2091,6 +2180,8 @@
 
   qualified_type_def(type_base_sptr type, CV quals, const location& locus);
 
+  qualified_type_def(environment* env, CV quals, const location& locus);
+
   virtual size_t
   get_size_in_bits() const;
 
@@ -2171,9 +2262,7 @@
 class pointer_type_def : public virtual type_base, public virtual decl_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbidden.
   pointer_type_def();
@@ -2189,6 +2278,13 @@
   pointer_type_def(const type_base_sptr& pointed_to_type, size_t size_in_bits,
 		   size_t alignment_in_bits, const location& locus);
 
+  pointer_type_def(environment* env, size_t size_in_bits,
+		   size_t alignment_in_bits, const location& locus);
+
+
+  void
+  set_pointed_to_type(const type_base_sptr&);
+
   virtual bool
   operator==(const decl_base&) const;
 
@@ -2247,6 +2343,12 @@
 		     bool lvalue, size_t size_in_bits,
 		     size_t alignment_in_bits, const location& locus);
 
+  reference_type_def(const environment* env, bool lvalue, size_t size_in_bits,
+		     size_t alignment_in_bits, const location& locus);
+
+  void
+  set_pointed_to_type(type_base_sptr& pointed_to_type);
+
   virtual bool
   operator==(const decl_base&) const;
 
@@ -2287,14 +2389,14 @@
 /// The abstraction of an array type.
 class array_type_def : public virtual type_base, public virtual decl_base
 {
-private:
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbidden.
   array_type_def();
 
+  void update_size();
+
 public:
 
   /// Hasher for intances of array_type_def.
@@ -2314,13 +2416,13 @@
   class subrange_type : public virtual type_base,  public virtual decl_base
   {
     struct priv;
-    typedef shared_ptr<priv> priv_sptr;
-    priv_sptr priv_;
+    std::unique_ptr<priv> priv_;
 
     // Forbidden.
     subrange_type();
   public:
 
+    virtual ~subrange_type();
     /// This class is to hold the value of the bound of a subrange.
     /// The value can be either signed or unsigned, at least when it
     /// comes from DWARF.  The class keeps the sign information, but
@@ -2440,6 +2542,10 @@
 		 const std::vector<subrange_sptr>& subs,
 		 const location& locus);
 
+  array_type_def(environment* env,
+		 const std::vector<subrange_sptr>& subs,
+		 const location& locus);
+
   translation_unit::language
   get_language() const;
 
@@ -2503,6 +2609,12 @@
 /// Abstracts a declaration for an enum type.
 class enum_type_decl : public virtual type_base, public virtual decl_base
 {
+  class priv;
+  std::unique_ptr<priv> priv_;
+
+  // Forbidden
+  enum_type_decl();
+
 public:
 
   /// A hasher for an enum_type_decl.
@@ -2514,18 +2626,6 @@
   /// Convenience typedef for a list of @ref enumerator.
   typedef std::vector<enumerator> enumerators;
 
-private:
-
-  class priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
-
-  // Forbidden
-  enum_type_decl();
-
-public:
-
   /// Constructor of an enum type declaration.
   ///
   /// @param name the name of the enum
@@ -2592,14 +2692,14 @@
 class enum_type_decl::enumerator
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
-
+  std::unique_ptr<priv> priv_;
 
 public:
 
   enumerator();
 
+  ~enumerator();
+
   enumerator(const environment* env, const string& name, int64_t value);
 
   enumerator(const enumerator&);
@@ -2645,9 +2745,7 @@
 class typedef_decl : public virtual type_base, public virtual decl_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbidden
   typedef_decl();
@@ -2663,6 +2761,12 @@
 	       const string& mangled_name = "",
 	       visibility vis = VISIBILITY_DEFAULT);
 
+  typedef_decl(const string& name,
+	       environment* env,
+	       const location& locus,
+	       const string& mangled_name = "",
+	       visibility vis = VISIBILITY_DEFAULT);
+
   virtual size_t
   get_size_in_bits() const;
 
@@ -2700,9 +2804,7 @@
 {
 protected:
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
   dm_context_rel();
@@ -2752,7 +2854,7 @@
 class var_decl : public virtual decl_base
 {
   struct priv;
-  shared_ptr<priv> priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbidden
   var_decl();
@@ -3024,9 +3126,7 @@
 class function_decl::parameter : public decl_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
 
@@ -3056,6 +3156,8 @@
 	    unsigned			index = 0,
 	    bool			variadic_marker = false);
 
+  virtual ~parameter();
+
   const type_base_sptr
   get_type()const;
 
@@ -3127,9 +3229,6 @@
 /// Abstraction of a function type.
 class function_type : public virtual type_base
 {
-  struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
 protected:
   virtual void on_canonical_type_set();
 
@@ -3143,7 +3242,8 @@
   /// Convenience typedef for a vector of @ref parameter_sptr
   typedef std::vector<parameter_sptr>		parameters;
 
-  priv_sptr priv_;
+  struct priv;
+  std::unique_ptr<priv> priv_;
 
 private:
   function_type();
@@ -3226,8 +3326,7 @@
 class method_type : public function_type
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   method_type();
 
@@ -3283,8 +3382,7 @@
 class template_decl : public virtual decl_base
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   template_decl();
 
@@ -3316,8 +3414,7 @@
 class template_parameter
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbidden
   template_parameter();
@@ -3363,9 +3460,7 @@
 class type_tparameter : public template_parameter, public virtual type_decl
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbidden
   type_tparameter();
@@ -3396,9 +3491,7 @@
 class non_type_tparameter : public template_parameter, public virtual decl_base
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   type_base_wptr type_;
 
@@ -3445,8 +3538,7 @@
 class template_tparameter : public type_tparameter, public template_decl
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbidden
   template_tparameter();
@@ -3481,9 +3573,7 @@
 class type_composition : public template_parameter, public virtual decl_base
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   type_composition();
 
@@ -3521,9 +3611,7 @@
 class function_tdecl : public template_decl, public scope_decl
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbidden
   function_tdecl();
@@ -3572,9 +3660,7 @@
 class class_tdecl : public template_decl, public scope_decl
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbidden
   class_tdecl();
@@ -3831,12 +3917,6 @@
   virtual void
   set_alignment_in_bits(size_t);
 
-  typedef_decl_sptr
-  get_naming_typedef() const;
-
-  void
-  set_naming_typedef(const typedef_decl_sptr&);
-
  void
   insert_member_type(type_base_sptr t,
 		     declarations::iterator before);
@@ -4192,9 +4272,7 @@
 			      public virtual decl_base
 {
   struct priv;
-  typedef shared_ptr<priv>priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbidden
   base_spec();
@@ -4210,6 +4288,8 @@
   base_spec(const type_base_sptr& base, access_specifier a,
 	    long offset_in_bits = -1, bool is_virtual = false);
 
+  virtual ~base_spec();
+
   class_decl_sptr
   get_base_class() const;
 
@@ -4709,14 +4789,14 @@
 class ir_node_visitor : public node_visitor_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
 
   ir_node_visitor();
 
+  virtual ~ir_node_visitor();
+
   void allow_visiting_already_visited_type_node(bool);
   bool allow_visiting_already_visited_type_node() const;
   void mark_type_node_as_visited(type_base *);
diff --git a/include/abg-libxml-utils.h b/include/abg-libxml-utils.h
index 69e940f..7a2e257 100644
--- a/include/abg-libxml-utils.h
+++ b/include/abg-libxml-utils.h
@@ -81,9 +81,6 @@
 #define CHAR_STR(xml_char_str) \
   reinterpret_cast<char*>(xml_char_str.get())
 
-xmlNodePtr
-advance_to_next_sibling_element(xmlNodePtr node);
-
 void
 escape_xml_string(const std::string& str,
 		  std::string& escaped);
diff --git a/include/abg-reader.h b/include/abg-reader.h
index 13c3ef2..a3aa0f8 100644
--- a/include/abg-reader.h
+++ b/include/abg-reader.h
@@ -82,6 +82,12 @@
 consider_types_not_reachable_from_public_interfaces(read_context& ctxt,
 						    bool flag);
 }//end xml_reader
+
+#ifdef WITH_DEBUG_SELF_COMPARISON
+bool
+load_canonical_type_ids(xml_reader::read_context& ctxt,
+			const string& file_path);
+#endif
 }//end namespace abigail
 
 #endif // __ABG_READER_H__
diff --git a/include/abg-suppression.h b/include/abg-suppression.h
index de2c601..6c13e33 100644
--- a/include/abg-suppression.h
+++ b/include/abg-suppression.h
@@ -38,14 +38,14 @@
 /// it matches the supppression specification.
 class suppression_base
 {
-  class priv;
-  typedef shared_ptr<priv> priv_sptr;
-
+public:
+  class priv; // declare publicly to allow subclasses to reuse the priv
+private:
   // Forbid default constructor
   suppression_base();
 
 public:
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   suppression_base(const string& label);
 
@@ -139,14 +139,12 @@
 class type_suppression : public suppression_base
 {
   class priv;
-  typedef shared_ptr<priv> priv_sptr;
 
   // Forbid this;
   type_suppression();
 
 public:
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   /// The kind of the type the current type suppression is supposed to
   /// be about.
@@ -289,6 +287,9 @@
 /// might get inserted.
 class type_suppression::insertion_range
 {
+  struct priv;
+  std::unique_ptr<priv> priv_;
+
 public:
 
   class boundary;
@@ -305,13 +306,6 @@
   /// fn_call_expr_boundary
   typedef shared_ptr<fn_call_expr_boundary> fn_call_expr_boundary_sptr;
 
-private:
-  struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
-
-public:
   insertion_range();
 
   insertion_range(boundary_sptr begin, boundary_sptr end);
@@ -334,7 +328,10 @@
   static bool
   eval_boundary(boundary_sptr	boundary,
 		class_decl_sptr context,
-		ssize_t&	value);
+		uint64_t&	value);
+
+  static bool
+  boundary_value_is_end(uint64_t value);
 }; // end class insertion_range
 
 type_suppression::insertion_range::integer_boundary_sptr
@@ -348,9 +345,7 @@
 class type_suppression::insertion_range::boundary
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
   boundary();
@@ -363,16 +358,14 @@
   : public type_suppression::insertion_range::boundary
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   integer_boundary();
 
 public:
-  integer_boundary(int value);
-  int as_integer() const;
-  operator int() const;
+  integer_boundary(uint64_t value);
+  uint64_t as_integer() const;
+  operator uint64_t () const;
   ~integer_boundary();
 }; //end class type_suppression::insertion_range::integer_boundary
 
@@ -383,9 +376,7 @@
   : public type_suppression::insertion_range::boundary
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   fn_call_expr_boundary();
 
@@ -412,11 +403,10 @@
 class function_suppression : public suppression_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
 
 public:
 
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
   class parameter_spec;
 
   /// Convenience typedef for shared_ptr of @ref parameter_spec.
@@ -582,12 +572,10 @@
 /// function suppression specification.
 class function_suppression::parameter_spec
 {
-  class priv;
-  typedef shared_ptr<priv> priv_sptr;
-
   friend class function_suppression;
 
-  priv_sptr priv_;
+  class priv;
+  std::unique_ptr<priv> priv_;
 
   // Forbid this.
   parameter_spec();
@@ -657,11 +645,9 @@
 
 private:
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
 
 public:
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   variable_suppression(const string& label = "",
 		       const string& name = "",
@@ -791,10 +777,7 @@
 /// which file it has to avoid loading.
 class file_suppression: public suppression_base
 {
-  class priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   // Forbid this
   file_suppression();
diff --git a/include/abg-tools-utils.h b/include/abg-tools-utils.h
index 66b288c..68e5402 100644
--- a/include/abg-tools-utils.h
+++ b/include/abg-tools-utils.h
@@ -61,6 +61,7 @@
 bool string_suffix(const string&, const string&, string&);
 bool sorted_strings_common_prefix(vector<string>&, string&);
 string get_library_version_string();
+string get_abixml_version_string();
 bool execute_command_and_get_output(const string&, vector<string>&);
 bool get_dsos_provided_by_rpm(const string& rpm_path,
 			      set<string>& provided_dsos);
@@ -135,9 +136,7 @@
 class temp_file
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
   temp_file();
 
@@ -249,9 +248,7 @@
 class timer
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 public:
   enum kind
diff --git a/include/abg-traverse.h b/include/abg-traverse.h
index fce72b2..b15aece 100644
--- a/include/abg-traverse.h
+++ b/include/abg-traverse.h
@@ -38,9 +38,7 @@
 class traversable_base
 {
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
-
-  priv_sptr priv_;
+  std::unique_ptr<priv> priv_;
 
 protected:
 
diff --git a/include/abg-version.h b/include/abg-version.h
index 3f40972..10b8f3a 100644
--- a/include/abg-version.h
+++ b/include/abg-version.h
@@ -1,10 +1,10 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#include "android_build_version.h"
-
 #ifndef __ABG_VERSION_H__
 #define __ABG_VERSION_H__
 #define ABIGAIL_VERSION_MAJOR "2"
-#define ABIGAIL_VERSION_MINOR "0"
+#define ABIGAIL_VERSION_MINOR "1"
 #define ABIGAIL_VERSION_REVISION "0"
-#define ABIGAIL_VERSION_SUFFIX "-" ANDROID_BUILD_VERSION
+#define ABIGAIL_VERSION_SUFFIX ""
+#define ABIGAIL_ABIXML_VERSION_MAJOR "2"
+#define ABIGAIL_ABIXML_VERSION_MINOR "1"
 #endif
diff --git a/include/abg-version.h.in b/include/abg-version.h.in
index dc7531a..939f0cd 100644
--- a/include/abg-version.h.in
+++ b/include/abg-version.h.in
@@ -5,4 +5,6 @@
 #define ABIGAIL_VERSION_MINOR "@VERSION_MINOR@"
 #define ABIGAIL_VERSION_REVISION "@VERSION_REVISION@"
 #define ABIGAIL_VERSION_SUFFIX "@VERSION_SUFFIX@"
+#define ABIGAIL_ABIXML_VERSION_MAJOR "@ABIXML_VERSION_MAJOR@"
+#define ABIGAIL_ABIXML_VERSION_MINOR "@ABIXML_VERSION_MINOR@"
 #endif
diff --git a/include/abg-workers.h b/include/abg-workers.h
index 5b55244..678c06a 100644
--- a/include/abg-workers.h
+++ b/include/abg-workers.h
@@ -68,13 +68,12 @@
 {
 public:
   struct priv;
-  typedef shared_ptr<priv> priv_sptr;
 
   /// A convenience typedef for a vector of @ref task_sptr
   typedef std::vector<task_sptr> tasks_type;
 
 private:
-  priv_sptr p_;
+  std::unique_ptr<priv> p_;
 
 public:
   struct task_done_notify;
diff --git a/include/abg-writer.h b/include/abg-writer.h
index 552a3b0..b6bdcb2 100644
--- a/include/abg-writer.h
+++ b/include/abg-writer.h
@@ -100,7 +100,8 @@
 bool
 write_translation_unit(write_context&	       ctxt,
 		       const translation_unit& tu,
-		       const unsigned	       indent);
+		       const unsigned	       indent,
+		       bool		       last = true);
 
 bool
 write_corpus_to_archive(const corpus& corp,
@@ -127,6 +128,16 @@
 		   unsigned		    indent);
 
 }// end namespace xml_writer
+
+#ifdef WITH_DEBUG_SELF_COMPARISON
+void
+write_canonical_type_ids(xml_writer::write_context&, ostream&);
+
+bool
+write_canonical_type_ids(xml_writer::write_context&,
+			const string &);
+#endif
+
 }// end namespace abigail
 
 #endif //  __ABG_WRITER_H__
diff --git a/patches/000-version.patch b/patches/000-version.patch
deleted file mode 100644
index 7c90041..0000000
--- a/patches/000-version.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/include/abg-version.h b/include/abg-version.h
-index 98b2a0603fe9..b6021924f497 100644
---- a/include/abg-version.h
-+++ b/include/abg-version.h
-@@ -1,8 +1,10 @@
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-+#include "android_build_version.h"
-+
- #ifndef __ABG_VERSION_H__
- #define __ABG_VERSION_H__
- #define ABIGAIL_VERSION_MAJOR "2"
- #define ABIGAIL_VERSION_MINOR "0"
- #define ABIGAIL_VERSION_REVISION "0"
--#define ABIGAIL_VERSION_SUFFIX ""
-+#define ABIGAIL_VERSION_SUFFIX "-" ANDROID_BUILD_VERSION
- #endif
diff --git a/post_update.sh b/post_update.sh
index 72f3b81..ee12080 100755
--- a/post_update.sh
+++ b/post_update.sh
@@ -11,7 +11,7 @@
     cd "$1"
 fi
 
-autoreconf -i && ./configure --disable-shared
+autoreconf -i && ./configure --disable-shared --enable-cxx17
 
 # if called from the external_updater, do not apply any patches as it will do
 # that for us, otherwise do if there are any
diff --git a/src/Makefile.am b/src/Makefile.am
index 430ce98..29da1ec 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -26,6 +26,7 @@
 abg-suppression.cc			\
 abg-comp-filter.cc			\
 abg-reader.cc				\
+abg-elf-reader-common.cc		\
 abg-dwarf-reader.cc			\
 abg-libxml-utils.cc			\
 abg-hash.cc				\
@@ -41,6 +42,10 @@
 abg-symtab-reader.cc			\
 $(VIZ_SOURCES)
 
+if CTF_READER
+libabigail_la_SOURCES += abg-ctf-reader.cc
+endif
+
 libabigail_la_LIBADD = $(DEPS_LIBS)
 libabigail_la_LDFLAGS = -lpthread -Wl,--as-needed -no-undefined
 
diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc
index a09d5c2..ac75ff6 100644
--- a/src/abg-comparison.cc
+++ b/src/abg-comparison.cc
@@ -914,6 +914,8 @@
   // add_diff_filter(f);
 }
 
+diff_context::~diff_context() = default;
+
 /// Set the corpus diff relevant to this context.
 ///
 /// @param d the corpus_diff we are interested in.
@@ -2804,10 +2806,6 @@
   type_or_decl_base_sptr f = first;
   type_or_decl_base_sptr s = second;
 
-  // Look through no-op qualified types.
-  f = look_through_no_op_qualified_type(is_type(f));
-  s = look_through_no_op_qualified_type(is_type(s));
-
   diff_sptr d;
 
   ((d = try_to_diff<type_decl>(f, s, ctxt))
@@ -4196,15 +4194,19 @@
 					second->get_underlying_type(),
 					ctxt);
   enum_diff_sptr d(new enum_diff(first, second, ud, ctxt));
-
-  compute_diff(first->get_enumerators().begin(),
-	       first->get_enumerators().end(),
-	       second->get_enumerators().begin(),
-	       second->get_enumerators().end(),
-	       d->priv_->enumerators_changes_);
-
-  d->ensure_lookup_tables_populated();
-
+  bool s = first->get_environment()->use_enum_binary_only_equality();
+  first->get_environment()->use_enum_binary_only_equality(true);
+  if (first != second)
+    {
+      first->get_environment()->use_enum_binary_only_equality(false);
+      compute_diff(first->get_enumerators().begin(),
+		   first->get_enumerators().end(),
+		   second->get_enumerators().begin(),
+		   second->get_enumerators().end(),
+		   d->priv_->enumerators_changes_);
+      d->ensure_lookup_tables_populated();
+    }
+  first->get_environment()->use_enum_binary_only_equality(s);
   ctxt->initialize_canonical_diff(d);
 
   return d;
@@ -4966,7 +4968,7 @@
 ///
 /// @return the (possibly) shared private data of the current instance
 /// of @ref class_or_union_diff.
-const class_or_union_diff::priv_sptr&
+const class_or_union_diff::priv_ptr&
 class_or_union_diff::get_priv() const
 {
   if (priv_)
@@ -5322,7 +5324,7 @@
 				 get_priv()->sorted_changed_bases_);
 
   {
-    const class_or_union_diff::priv_sptr &p = class_or_union_diff::get_priv();
+    const class_or_union_diff::priv_ptr &p = class_or_union_diff::get_priv();
 
     edit_script& e = p->member_fns_changes_;
 
@@ -5543,7 +5545,7 @@
 ///
 /// @return the (possibly) shared private data of the current instance
 /// of class_diff.
-const class_diff::priv_sptr&
+const class_diff::priv_ptr&
 class_diff::get_priv() const
 {
   if (priv_)
@@ -7676,6 +7678,8 @@
   : priv_(new diff_maps::priv())
 {}
 
+diff_maps::~diff_maps() = default;
+
 /// Getter of the map that contains basic type diffs.
 ///
 /// @return the map that contains basic type diffs.
@@ -10414,6 +10418,8 @@
   : priv_(new priv(first, second, ctxt))
 {}
 
+corpus_diff::~corpus_diff() = default;
+
 /// Finish building the current instance of @ref corpus_diff.
 void
 corpus_diff::finish_diff_type()
@@ -11195,6 +11201,8 @@
   : priv_(new priv)
 {}
 
+diff_node_visitor::~diff_node_visitor() = default;
+
 /// Constructor of the @ref diff_node_visitor type.
 ///
 /// @param k how the visiting has to be performed.
@@ -12206,9 +12214,25 @@
 		// LOCAL_NON_TYPE_CHANGE_KIND kind.
 		|| is_pointer_diff(d)
 		|| is_qualified_type_diff(d)
+		// A typedef with local non-type changes should not
+		// see redundancy propagation from its underlying
+		// type, otherwise, the non-type change might be
+		// "suppressed" away.
 		|| (is_typedef_diff(d)
 		    && (!(d->has_local_changes()
-			  & LOCAL_NON_TYPE_CHANGE_KIND)))))
+			  & LOCAL_NON_TYPE_CHANGE_KIND)))
+		// A (member) variable with non-type local changes
+		// should not see redundacy propagation from its type.
+		// If redundant local-type changes are carried by its
+		// type however, then that redundancy is propagated to
+		// the variable.  This is key to keep the redundancy
+		// consistency in the system; otherwise, a type change
+		// would be rightfully considered redundant at some
+		// places but not at others.
+		|| (is_var_diff(d)
+		    && (!(d->has_local_changes()
+			  & LOCAL_NON_TYPE_CHANGE_KIND)))
+		))
 	  {
 	    bool has_non_redundant_child = false;
 	    bool has_non_empty_child = false;
diff --git a/src/abg-config.cc b/src/abg-config.cc
index 4063a79..42199ba 100644
--- a/src/abg-config.cc
+++ b/src/abg-config.cc
@@ -5,6 +5,10 @@
 
 /// @file
 
+#if defined(USE_ANDROID_BUILD_NUMBER)
+#include <build/version.h>
+#endif
+
 #include "abg-internal.h"
 // <headers defining libabigail's API go under here>
 ABG_BEGIN_EXPORT_DECLARATIONS
@@ -18,8 +22,8 @@
 namespace abigail
 {
 config::config()
-  : m_format_minor("0"),
-    m_format_major("2"),
+  : m_format_minor(ABIGAIL_ABIXML_VERSION_MINOR),
+    m_format_major(ABIGAIL_ABIXML_VERSION_MAJOR),
     m_xml_element_indent(2),
     m_tu_instr_suffix(".bi"),
     m_tu_instr_archive_suffix(".abi")
@@ -68,6 +72,15 @@
 
 extern "C"
 {
+/// Return the relevant version numbers of the library.
+///
+/// @param maj the major version number of the library.
+///
+/// @param min the minor version number of the library.
+///
+/// @param rev the revision version number of the library.
+///
+/// @param suf the version suffix of the library.
 void
 abigail_get_library_version(std::string& major,
 			    std::string& minor,
@@ -77,7 +90,25 @@
   major = ABIGAIL_VERSION_MAJOR;
   minor = ABIGAIL_VERSION_MINOR;
   revision = ABIGAIL_VERSION_REVISION;
+#if defined(USE_ANDROID_BUILD_NUMBER)
+  // Android edit: there is no compile time constant for build number.
+  suffix = android::build::GetBuildNumber();
+#else
   suffix = ABIGAIL_VERSION_SUFFIX;
+#endif
+}
+
+/// Return the version numbers for the ABIXML format.
+///
+/// @param maj the major version number of the ABIXML format.
+///
+/// @param min the minor version number of the ABIXML format.
+void
+abigail_get_abixml_version(std::string& major,
+			   std::string& minor)
+{
+  major = ABIGAIL_ABIXML_VERSION_MAJOR;
+  minor = ABIGAIL_ABIXML_VERSION_MINOR;
 }
 
 }
diff --git a/src/abg-corpus.cc b/src/abg-corpus.cc
index c9f5c56..a517f38 100644
--- a/src/abg-corpus.cc
+++ b/src/abg-corpus.cc
@@ -602,6 +602,8 @@
   init_format_version();
 }
 
+corpus::~corpus() = default;
+
 /// Getter of the enviroment of the corpus.
 ///
 /// @return the environment of this corpus.
@@ -1009,7 +1011,7 @@
 	}
     }
   return (members_empty
-	  && !get_symtab()->has_symbols()
+	  && (!get_symtab() || !get_symtab()->has_symbols())
 	  && priv_->soname.empty()
 	  && priv_->needed.empty());
 }
diff --git a/src/abg-ctf-reader.cc b/src/abg-ctf-reader.cc
new file mode 100644
index 0000000..e5ea0ca
--- /dev/null
+++ b/src/abg-ctf-reader.cc
@@ -0,0 +1,1158 @@
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// -*- Mode: C++ -*-
+//
+// Copyright (C) 2021 Oracle, Inc.
+//
+// Author: Jose E. Marchesi
+
+/// @file
+///
+/// This file contains the definitions of the entry points to
+/// de-serialize an instance of @ref abigail::corpus from a file in
+/// ELF format, containing CTF information.
+
+#include "config.h"
+
+#include <fcntl.h> /* For open(3) */
+#include <iostream>
+#include <memory>
+
+#include "ctf-api.h"
+
+#include "abg-internal.h"
+#include "abg-ir-priv.h"
+#include "abg-elf-helpers.h"
+
+// <headers defining libabigail's API go under here>
+ABG_BEGIN_EXPORT_DECLARATIONS
+
+#include "abg-ctf-reader.h"
+#include "abg-libxml-utils.h"
+#include "abg-reader.h"
+#include "abg-corpus.h"
+#include "abg-symtab-reader.h"
+#include "abg-tools-utils.h"
+
+ABG_END_EXPORT_DECLARATIONS
+// </headers defining libabigail's API>
+
+namespace abigail
+{
+namespace ctf_reader
+{
+using std::dynamic_pointer_cast;
+
+class read_context
+{
+public:
+  /// The name of the ELF file from which the CTF archive got
+  /// extracted.
+  string filename;
+
+  /// The IR environment.
+  ir::environment *ir_env;
+
+  /// The CTF archive read from FILENAME.  If an archive couldn't
+  /// be read from the file then this is NULL.
+  ctf_archive_t *ctfa;
+
+  /// A map associating CTF type ids with libabigail IR types.  This
+  /// is used to reuse already generated types.
+  unordered_map<ctf_id_t,type_base_sptr> types_map;
+
+  /// libelf handler for the ELF file from which we read the CTF data,
+  /// and the corresponding file descriptor.
+  Elf *elf_handler;
+  int elf_fd;
+
+  /// The symtab read from the ELF file.
+  symtab_reader::symtab_sptr symtab;
+
+  /// Raw contents of several sections from the ELF file.  These are
+  /// used by libctf.
+  ctf_sect_t ctf_sect;
+  ctf_sect_t symtab_sect;
+  ctf_sect_t strtab_sect;
+
+  /// Associate a given CTF type ID with a given libabigail IR type.
+  void add_type(ctf_id_t ctf_type, type_base_sptr type)
+  {
+    types_map.insert(std::make_pair(ctf_type, type));
+  }
+
+  /// Lookup a given CTF type ID in the types map.
+  ///
+  /// @param ctf_type the type ID of the type to lookup.
+  type_base_sptr lookup_type(ctf_id_t ctf_type)
+  {
+    type_base_sptr result;
+
+    auto search = types_map.find(ctf_type);
+    if (search != types_map.end())
+      result = search->second;
+
+    return result;
+  }
+
+  /// Canonicalize all the types stored in the types map.
+  void canonicalize_all_types(void)
+  {
+    for (auto t = types_map.begin(); t != types_map.end(); t++)
+      canonicalize (t->second);
+  }
+
+  /// Constructor.
+  ///
+  /// @param elf_path the path to the ELF file.
+  read_context(const string& elf_path, ir::environment *env)
+  {
+    types_map.clear();
+    filename = elf_path;
+    ir_env = env;
+    elf_handler = NULL;
+    elf_fd = -1;
+    ctfa = NULL;
+  }
+
+  /// Destructor of the @ref read_context type.
+  ~read_context()
+  {
+    ctf_close(ctfa);
+  }
+}; // end class read_context.
+
+/// Forward reference, needed because several of the process_ctf_*
+/// functions below are indirectly recursive through this call.
+static type_base_sptr lookup_type(read_context *ctxt,
+                                  corpus_sptr corp,
+                                  translation_unit_sptr tunit,
+                                  ctf_dict_t *ctf_dictionary,
+                                  ctf_id_t ctf_type);
+
+/// Build and return a typedef libabigail IR.
+///
+/// @param ctxt the read context.
+/// @param corp the libabigail IR corpus being constructed.
+/// @param tunit the current IR translation unit.
+/// @param ctf_dictionary the CTF dictionary being read.
+/// @param ctf_type the CTF type ID of the source type.
+///
+/// @return a shared pointer to the IR node for the typedef.
+
+static typedef_decl_sptr
+process_ctf_typedef(read_context *ctxt,
+                    corpus_sptr corp,
+                    translation_unit_sptr tunit,
+                    ctf_dict_t *ctf_dictionary,
+                    ctf_id_t ctf_type)
+{
+  typedef_decl_sptr result;
+
+  ctf_id_t ctf_utype = ctf_type_reference(ctf_dictionary, ctf_type);
+  if (ctf_utype == CTF_ERR)
+    return result;
+
+  const char *typedef_name = ctf_type_name_raw(ctf_dictionary, ctf_type);
+  type_base_sptr utype = lookup_type(ctxt, corp, tunit,
+                                     ctf_dictionary, ctf_utype);
+
+  if (!utype)
+    return result;
+
+  result = dynamic_pointer_cast<typedef_decl>(ctxt->lookup_type(ctf_type));
+  if (result)
+    return result;
+
+  result.reset(new typedef_decl(typedef_name, utype, location(),
+                                typedef_name /* mangled_name */));
+
+  /* If this typedef "names" an anonymous type, reflect this fact in
+     the underlying type.  In C enum, struct and union types can be
+     anonymous.  */
+  if (is_anonymous_type(utype)
+      && (is_enum_type(utype) || is_class_or_union_type(utype)))
+    {
+      decl_base_sptr decl = is_decl(utype);
+      ABG_ASSERT(decl);
+      decl->set_naming_typedef(result);
+    }
+
+  if (result)
+    {
+      add_decl_to_scope(result, tunit->get_global_scope());
+      ctxt->add_type(ctf_type, result);
+    }
+
+  return result;
+}
+
+/// Build and return an integer or float type declaration libabigail
+/// IR.
+///
+/// @param ctxt the read context.
+/// @param corp the libabigail IR corpus being constructed.
+/// @param ctf_dictionary the CTF dictionary being read.
+/// @param ctf_type the CTF type ID of the source type.
+///
+/// @return a shared pointer to the IR node for the type.
+
+static type_decl_sptr
+process_ctf_base_type(read_context *ctxt,
+                      corpus_sptr corp,
+                      translation_unit_sptr tunit,
+                      ctf_dict_t *ctf_dictionary,
+                      ctf_id_t ctf_type)
+{
+  type_decl_sptr result;
+
+  ssize_t type_alignment = ctf_type_align(ctf_dictionary, ctf_type);
+  const char *type_name = ctf_type_name_raw(ctf_dictionary, ctf_type);
+
+  /* Get the type encoding and extract some useful properties of
+     the type from it.  In case of any error, just ignore the
+     type.  */
+  ctf_encoding_t type_encoding;
+  if (ctf_type_encoding(ctf_dictionary,
+                         ctf_type,
+                         &type_encoding))
+    return result;
+
+  /* Create the IR type corresponding to the CTF type.  */
+  if (type_encoding.cte_bits == 0
+      && type_encoding.cte_format == CTF_INT_SIGNED)
+    {
+      /* This is the `void' type.  */
+      type_base_sptr void_type = ctxt->ir_env->get_void_type();
+      decl_base_sptr type_declaration = get_type_declaration(void_type);
+      result = is_type_decl(type_declaration);
+    }
+  else
+    {
+      result = lookup_basic_type(type_name, *corp);
+      if (!result)
+        result.reset(new type_decl(ctxt->ir_env,
+                                   type_name,
+                                   type_encoding.cte_bits,
+                                   type_alignment * 8 /* in bits */,
+                                   location(),
+                                   type_name /* mangled_name */));
+
+    }
+
+  if (result)
+    {
+      add_decl_to_scope(result, tunit->get_global_scope());
+      ctxt->add_type(ctf_type, result);
+    }
+
+  return result;
+}
+
+/// Build and return a function type libabigail IR.
+///
+/// @param ctxt the read context.
+/// @param corp the libabigail IR corpus being constructed.
+/// @param tunit the current IR translation unit.
+/// @param ctf_dictionary the CTF dictionary being read.
+/// @param ctf_type the CTF type ID of the source type.
+///
+/// @return a shared pointer to the IR node for the function type.
+
+static function_type_sptr
+process_ctf_function_type(read_context *ctxt,
+                          corpus_sptr corp,
+                          translation_unit_sptr tunit,
+                          ctf_dict_t *ctf_dictionary,
+                          ctf_id_t ctf_type)
+{
+  function_type_sptr result;
+
+  /* Fetch the function type info from the CTF type.  */
+  ctf_funcinfo_t funcinfo;
+  ctf_func_type_info(ctf_dictionary, ctf_type, &funcinfo);
+  int vararg_p = funcinfo.ctc_flags & CTF_FUNC_VARARG;
+
+  /* Take care first of the result type.  */
+  ctf_id_t ctf_ret_type = funcinfo.ctc_return;
+  type_base_sptr ret_type = lookup_type(ctxt, corp, tunit,
+                                        ctf_dictionary, ctf_ret_type);
+  if (!ret_type)
+    return result;
+
+  /* Now process the argument types.  */
+  int argc = funcinfo.ctc_argc;
+  std::vector<ctf_id_t> argv(argc);
+  if (static_cast<ctf_id_t>(ctf_func_type_args(ctf_dictionary, ctf_type,
+					       argc, argv.data())) == CTF_ERR)
+    return result;
+
+  function_decl::parameters function_parms;
+  for (int i = 0; i < argc; i++)
+    {
+      ctf_id_t ctf_arg_type = argv[i];
+      type_base_sptr arg_type = lookup_type(ctxt, corp, tunit,
+                                            ctf_dictionary, ctf_arg_type);
+      if (!arg_type)
+        return result;
+
+      function_decl::parameter_sptr parm
+        (new function_decl::parameter(arg_type, "",
+                                      location(),
+                                      vararg_p && (i == argc - 1),
+                                      false /* is_artificial */));
+      function_parms.push_back(parm);
+    }
+
+  result = dynamic_pointer_cast<function_type>(ctxt->lookup_type(ctf_type));
+  if (result)
+    return result;
+
+  /* Ok now the function type itself.  */
+  result.reset(new function_type(ret_type,
+                                 function_parms,
+                                 tunit->get_address_size(),
+                                 ctf_type_align(ctf_dictionary, ctf_type)));
+
+  if (result)
+    {
+      tunit->bind_function_type_life_time(result);
+      result->set_is_artificial(true);
+      decl_base_sptr function_type_decl = get_type_declaration(result);
+      add_decl_to_scope(function_type_decl, tunit->get_global_scope());
+      ctxt->add_type(ctf_type, result);
+    }
+
+  return result;
+}
+
+/// Add member information to a IR struct or union type.
+///
+/// @param ctxt the read context.
+/// @param corp the libabigail IR corpus being constructed.
+/// @param tunit the current IR translation unit.
+/// @param ctf_dictionary the CTF dictionary being read.
+/// @param ctf_type the CTF type ID of the source type.
+/// @param sou the IR struct or union type to which add the members.
+
+static void
+process_ctf_sou_members(read_context *ctxt,
+                        corpus_sptr corp,
+                        translation_unit_sptr tunit,
+                        ctf_dict_t *ctf_dictionary,
+                        ctf_id_t ctf_type,
+                        class_or_union_sptr sou)
+{
+  ssize_t member_size;
+  ctf_next_t *member_next = NULL;
+  const char *member_name = NULL;
+  ctf_id_t member_ctf_type;
+
+  while ((member_size = ctf_member_next(ctf_dictionary, ctf_type,
+                                        &member_next, &member_name,
+                                        &member_ctf_type,
+                                        CTF_MN_RECURSE)) >= 0)
+    {
+      ctf_membinfo_t membinfo;
+
+      if (static_cast<ctf_id_t>(ctf_member_info(ctf_dictionary,
+						ctf_type,
+						member_name,
+						&membinfo)) == CTF_ERR)
+        return;
+
+      /* Build the IR for the member's type.  */
+      type_base_sptr member_type = lookup_type(ctxt, corp, tunit,
+                                               ctf_dictionary,
+                                               member_ctf_type);
+      if (!member_type)
+        /* Ignore this member.  */
+        continue;
+
+      /* Create a declaration IR node for the member and add it to the
+         struct type.  */
+      var_decl_sptr data_member_decl(new var_decl(member_name,
+                                                  member_type,
+                                                  location(),
+                                                  member_name));
+      sou->add_data_member(data_member_decl,
+                           public_access,
+                           true /* is_laid_out */,
+                           false /* is_static */,
+                           membinfo.ctm_offset);
+    }
+  if (ctf_errno(ctf_dictionary) != ECTF_NEXT_END)
+    fprintf(stderr, "ERROR from ctf_member_next\n");
+}
+
+/// Build and return a struct type libabigail IR.
+///
+/// @param ctxt the read context.
+/// @param corp the libabigail IR corpus being constructed.
+/// @param tunit the current IR translation unit.
+/// @param ctf_dictionary the CTF dictionary being read.
+/// @param ctf_type the CTF type ID of the source type.
+///
+/// @return a shared pointer to the IR node for the struct type.
+
+static class_decl_sptr
+process_ctf_struct_type(read_context *ctxt,
+                        corpus_sptr corp,
+                        translation_unit_sptr tunit,
+                        ctf_dict_t *ctf_dictionary,
+                        ctf_id_t ctf_type)
+{
+  class_decl_sptr result;
+  std::string struct_type_name = ctf_type_name_raw(ctf_dictionary,
+                                                 ctf_type);
+  bool struct_type_is_anonymous = (struct_type_name == "");
+
+  /* The libabigail IR encodes C struct types in `class' IR nodes.  */
+  result.reset(new class_decl(ctxt->ir_env,
+                              struct_type_name,
+                              ctf_type_size(ctf_dictionary, ctf_type) * 8,
+                              ctf_type_align(ctf_dictionary, ctf_type) * 8,
+                              true /* is_struct */,
+                              location(),
+                              decl_base::VISIBILITY_DEFAULT,
+                              struct_type_is_anonymous));
+  if (!result)
+    return result;
+
+  /* The C type system indirectly supports loops by the mean of
+     pointers to structs or unions.  Since some contained type can
+     refer to this struct, we have to make it available in the cache
+     at this point even if the members haven't been added to the IR
+     node yet.  */
+  add_decl_to_scope(result, tunit->get_global_scope());
+  ctxt->add_type(ctf_type, result);
+
+  /* Now add the struct members as specified in the CTF type description.
+     This is C, so named types can only be defined in the global
+     scope.  */
+  process_ctf_sou_members(ctxt, corp, tunit, ctf_dictionary, ctf_type,
+                          result);
+
+  return result;
+}
+
+/// Build and return an union type libabigail IR.
+///
+/// @param ctxt the read context.
+/// @param corp the libabigail IR corpus being constructed.
+/// @param tunit the current IR translation unit.
+/// @param ctf_dictionary the CTF dictionary being read.
+/// @param ctf_type the CTF type ID of the source type.
+///
+/// @return a shared pointer to the IR node for the union type.
+
+static union_decl_sptr
+process_ctf_union_type(read_context *ctxt,
+                       corpus_sptr corp,
+                       translation_unit_sptr tunit,
+                       ctf_dict_t *ctf_dictionary,
+                       ctf_id_t ctf_type)
+{
+  union_decl_sptr result;
+  std::string union_type_name = ctf_type_name_raw(ctf_dictionary,
+                                                   ctf_type);
+  bool union_type_is_anonymous = (union_type_name == "");
+
+  /* Create the corresponding libabigail union IR node.  */
+  result.reset(new union_decl(ctxt->ir_env,
+                                union_type_name,
+                                ctf_type_size(ctf_dictionary, ctf_type) * 8,
+                                location(),
+                                decl_base::VISIBILITY_DEFAULT,
+                                union_type_is_anonymous));
+  if (!result)
+    return result;
+
+  /* The C type system indirectly supports loops by the mean of
+     pointers to structs or unions.  Since some contained type can
+     refer to this union, we have to make it available in the cache
+     at this point even if the members haven't been added to the IR
+     node yet.  */
+  add_decl_to_scope(result, tunit->get_global_scope());
+  ctxt->add_type(ctf_type, result);
+
+  /* Now add the union members as specified in the CTF type description.
+     This is C, so named types can only be defined in the global
+     scope.  */
+  process_ctf_sou_members(ctxt, corp, tunit, ctf_dictionary, ctf_type,
+                          result);
+
+  return result;
+}
+
+/// Build and return an array type libabigail IR.
+///
+/// @param ctxt the read context.
+/// @param corp the libabigail IR corpus being constructed.
+/// @param tunit the current IR translation unit.
+/// @param ctf_dictionary the CTF dictionary being read.
+/// @param ctf_type the CTF type ID of the source type.
+///
+/// @return a shared pointer to the IR node for the array type.
+
+static array_type_def_sptr
+process_ctf_array_type(read_context *ctxt,
+                       corpus_sptr corp,
+                       translation_unit_sptr tunit,
+                       ctf_dict_t *ctf_dictionary,
+                       ctf_id_t ctf_type)
+{
+  array_type_def_sptr result;
+  ctf_arinfo_t ctf_ainfo;
+  bool is_infinite = false;
+
+  /* First, get the information about the CTF array.  */
+  if (static_cast<ctf_id_t>(ctf_array_info(ctf_dictionary,
+					   ctf_type,
+					   &ctf_ainfo)) == CTF_ERR)
+    return result;
+
+  ctf_id_t ctf_element_type = ctf_ainfo.ctr_contents;
+  ctf_id_t ctf_index_type = ctf_ainfo.ctr_index;
+  uint64_t nelems = ctf_ainfo.ctr_nelems;
+
+  /* Make sure the element type is generated.  */
+  type_base_sptr element_type = lookup_type(ctxt, corp, tunit,
+                                            ctf_dictionary,
+                                            ctf_element_type);
+  if (!element_type)
+    return result;
+
+  /* Ditto for the index type.  */
+  type_base_sptr index_type = lookup_type(ctxt, corp, tunit,
+                                          ctf_dictionary,
+                                          ctf_index_type);
+  if (!index_type)
+    return result;
+
+  result = dynamic_pointer_cast<array_type_def>(ctxt->lookup_type(ctf_type));
+  if (result)
+    return result;
+
+  /* The number of elements of the array determines the IR subranges
+     type to build.  */
+  array_type_def::subranges_type subranges;
+  array_type_def::subrange_sptr subrange;
+  array_type_def::subrange_type::bound_value lower_bound;
+  array_type_def::subrange_type::bound_value upper_bound;
+
+  lower_bound.set_unsigned(0); /* CTF supports C only.  */
+  upper_bound.set_unsigned(nelems > 0 ? nelems - 1 : 0U);
+
+  /* for VLAs number of array elements is 0 */
+  if (upper_bound.get_unsigned_value() == 0)
+    is_infinite = true;
+
+  subrange.reset(new array_type_def::subrange_type(ctxt->ir_env,
+                                                   "",
+                                                   lower_bound,
+                                                   upper_bound,
+                                                   index_type,
+                                                   location(),
+                                                   translation_unit::LANG_C));
+  if (!subrange)
+    return result;
+
+  subrange->is_infinite(is_infinite);
+  add_decl_to_scope(subrange, tunit->get_global_scope());
+  canonicalize(subrange);
+  subranges.push_back(subrange);
+
+  /* Finally build the IR for the array type and return it.  */
+  result.reset(new array_type_def(element_type, subranges, location()));
+  if (result)
+    {
+      decl_base_sptr array_type_decl = get_type_declaration(result);
+      add_decl_to_scope(array_type_decl, tunit->get_global_scope());
+      ctxt->add_type(ctf_type, result);
+    }
+
+  return result;
+}
+
+/// Build and return a qualified type libabigail IR.
+///
+/// @param ctxt the read context.
+/// @param corp the libabigail IR corpus being constructed.
+/// @param tunit the current IR translation unit.
+/// @param ctf_dictionary the CTF dictionary being read.
+/// @param ctf_type the CTF type ID of the source type.
+
+static type_base_sptr
+process_ctf_qualified_type(read_context *ctxt,
+                           corpus_sptr corp,
+                           translation_unit_sptr tunit,
+                           ctf_dict_t *ctf_dictionary,
+                           ctf_id_t ctf_type)
+{
+  type_base_sptr result;
+  int type_kind = ctf_type_kind(ctf_dictionary, ctf_type);
+  ctf_id_t ctf_utype = ctf_type_reference(ctf_dictionary, ctf_type);
+  type_base_sptr utype = lookup_type(ctxt, corp, tunit,
+                                     ctf_dictionary, ctf_utype);
+  if (!utype)
+    return result;
+
+  qualified_type_def::CV qualifiers = qualified_type_def::CV_NONE;
+  if (type_kind == CTF_K_CONST)
+    qualifiers |= qualified_type_def::CV_CONST;
+  else if (type_kind == CTF_K_VOLATILE)
+    qualifiers |= qualified_type_def::CV_VOLATILE;
+  else if (type_kind == CTF_K_RESTRICT)
+    qualifiers |= qualified_type_def::CV_RESTRICT;
+  else
+    ABG_ASSERT_NOT_REACHED;
+
+  result.reset(new qualified_type_def(utype, qualifiers, location()));
+
+  if (result)
+    {
+      decl_base_sptr qualified_type_decl = get_type_declaration(result);
+      add_decl_to_scope(qualified_type_decl, tunit->get_global_scope());
+      ctxt->add_type(ctf_type, result);
+    }
+
+  return result;
+}
+
+/// Build and return a pointer type libabigail IR.
+///
+/// @param ctxt the read context.
+/// @param corp the libabigail IR corpus being constructed.
+/// @param tunit the current IR translation unit.
+/// @param ctf_dictionary the CTF dictionary being read.
+/// @param ctf_type the CTF type ID of the source type.
+///
+/// @return a shared pointer to the IR node for the pointer type.
+
+static pointer_type_def_sptr
+process_ctf_pointer_type(read_context *ctxt,
+                         corpus_sptr corp,
+                         translation_unit_sptr tunit,
+                         ctf_dict_t *ctf_dictionary,
+                         ctf_id_t ctf_type)
+{
+  pointer_type_def_sptr result;
+  ctf_id_t ctf_target_type = ctf_type_reference(ctf_dictionary, ctf_type);
+  if (ctf_target_type == CTF_ERR)
+    return result;
+
+  type_base_sptr target_type = lookup_type(ctxt, corp, tunit,
+                                           ctf_dictionary,
+                                           ctf_target_type);
+  if (!target_type)
+    return result;
+
+  result = dynamic_pointer_cast<pointer_type_def>(ctxt->lookup_type(ctf_type));
+  if (result)
+    return result;
+
+  result.reset(new pointer_type_def(target_type,
+                                      ctf_type_size(ctf_dictionary, ctf_type) * 8,
+                                      ctf_type_align(ctf_dictionary, ctf_type) * 8,
+                                      location()));
+  if (result)
+    {
+      add_decl_to_scope(result, tunit->get_global_scope());
+      ctxt->add_type(ctf_type, result);
+    }
+
+  return result;
+}
+
+/// Build and return an enum type libabigail IR.
+///
+/// @param ctxt the read context.
+/// @param corp the libabigail IR corpus being constructed.
+/// @param tunit the current IR translation unit.
+/// @param ctf_dictionary the CTF dictionary being read.
+/// @param ctf_type the CTF type ID of the source type.
+///
+/// @return a shared pointer to the IR node for the enum type.
+
+static enum_type_decl_sptr
+process_ctf_enum_type(read_context *ctxt,
+                      translation_unit_sptr tunit,
+                      ctf_dict_t *ctf_dictionary,
+                      ctf_id_t ctf_type)
+{
+  enum_type_decl_sptr result;
+
+  /* Build a signed integral type for the type of the enumerators, aka
+     the underlying type.  The size of the enumerators in bytes is
+     specified in the CTF enumeration type.  */
+  size_t utype_size_in_bits = ctf_type_size(ctf_dictionary, ctf_type) * 8;
+  type_decl_sptr utype;
+
+  utype.reset(new type_decl(ctxt->ir_env,
+                              "",
+                              utype_size_in_bits,
+                              utype_size_in_bits,
+                              location()));
+  utype->set_is_anonymous(true);
+  utype->set_is_artificial(true);
+  if (!utype)
+    return result;
+  add_decl_to_scope(utype, tunit->get_global_scope());
+  canonicalize(utype);
+
+  /* Iterate over the enum entries.  */
+  enum_type_decl::enumerators enms;
+  ctf_next_t *enum_next = NULL;
+  const char *ename;
+  int evalue;
+
+  while ((ename = ctf_enum_next(ctf_dictionary, ctf_type, &enum_next, &evalue)))
+    enms.push_back(enum_type_decl::enumerator(ctxt->ir_env, ename, evalue));
+  if (ctf_errno(ctf_dictionary) != ECTF_NEXT_END)
+    {
+      fprintf(stderr, "ERROR from ctf_enum_next\n");
+      return result;
+    }
+
+  const char *enum_name = ctf_type_name_raw(ctf_dictionary, ctf_type);
+  result.reset(new enum_type_decl(enum_name, location(),
+                                  utype, enms, enum_name));
+  if (result)
+    {
+      add_decl_to_scope(result, tunit->get_global_scope());
+      ctxt->add_type(ctf_type, result);
+    }
+
+  return result;
+}
+
+/// Add a new type declaration to the given libabigail IR corpus CORP.
+///
+/// @param ctxt the read context.
+/// @param corp the libabigail IR corpus being constructed.
+/// @param tunit the current IR translation unit.
+/// @param ctf_dictionary the CTF dictionary being read.
+/// @param ctf_type the CTF type ID of the source type.
+///
+/// Note that if @ref ctf_type can't reliably be translated to the IR
+/// then it is simply ignored.
+///
+/// @return a shared pointer to the IR node for the type.
+
+static type_base_sptr
+process_ctf_type(read_context *ctxt,
+                 corpus_sptr corp,
+                 translation_unit_sptr tunit,
+                 ctf_dict_t *ctf_dictionary,
+                 ctf_id_t ctf_type)
+{
+  int type_kind = ctf_type_kind(ctf_dictionary, ctf_type);
+  type_base_sptr result;
+
+  if ((result = ctxt->lookup_type(ctf_type)))
+    return result;
+
+  switch (type_kind)
+    {
+    case CTF_K_INTEGER:
+    case CTF_K_FLOAT:
+      {
+        type_decl_sptr type_decl
+          = process_ctf_base_type(ctxt, corp, tunit, ctf_dictionary, ctf_type);
+        result = is_type(type_decl);
+        break;
+      }
+    case CTF_K_TYPEDEF:
+      {
+        typedef_decl_sptr typedef_decl
+          = process_ctf_typedef(ctxt, corp, tunit, ctf_dictionary, ctf_type);
+        result = is_type(typedef_decl);
+        break;
+      }
+    case CTF_K_POINTER:
+      {
+        pointer_type_def_sptr pointer_type
+          = process_ctf_pointer_type(ctxt, corp, tunit, ctf_dictionary, ctf_type);
+        result = pointer_type;
+        break;
+      }
+    case CTF_K_CONST:
+    case CTF_K_VOLATILE:
+    case CTF_K_RESTRICT:
+      {
+        type_base_sptr qualified_type
+          = process_ctf_qualified_type(ctxt, corp, tunit, ctf_dictionary, ctf_type);
+        result = qualified_type;
+        break;
+      }
+    case CTF_K_ARRAY:
+      {
+        array_type_def_sptr array_type
+          = process_ctf_array_type(ctxt, corp, tunit, ctf_dictionary, ctf_type);
+        result = array_type;
+        break;
+      }
+    case CTF_K_ENUM:
+      {
+        enum_type_decl_sptr enum_type
+          = process_ctf_enum_type(ctxt, tunit, ctf_dictionary, ctf_type);
+        result = enum_type;
+        break;
+      }
+    case CTF_K_FUNCTION:
+      {
+        function_type_sptr function_type
+          = process_ctf_function_type(ctxt, corp, tunit, ctf_dictionary, ctf_type);
+        result = function_type;
+        break;
+      }
+    case CTF_K_STRUCT:
+      {
+        class_decl_sptr struct_decl
+          = process_ctf_struct_type(ctxt, corp, tunit, ctf_dictionary, ctf_type);
+        result = is_type(struct_decl);
+        break;
+      }
+    case CTF_K_UNION:
+      {
+        union_decl_sptr union_decl
+          = process_ctf_union_type(ctxt, corp, tunit, ctf_dictionary, ctf_type);
+        result = is_type(union_decl);
+        break;
+      }
+    case CTF_K_UNKNOWN:
+      /* Unknown types are simply ignored.  */
+    default:
+      break;
+    }
+
+  if (!result)
+    fprintf(stderr, "NOT PROCESSED TYPE %lu\n", ctf_type);
+
+  return result;
+}
+
+/// Given a CTF type id, lookup the corresponding libabigail IR type.
+/// If the IR type hasn't been generated yet, generate it.
+///
+/// @param ctxt the read context.
+/// @param corp the libabigail IR corpus being constructed.
+/// @param tunit the current IR translation unit.
+/// @param ctf_dictionary the CTF dictionary being read.
+/// @param ctf_type the CTF type ID of the looked type.
+///
+/// Note that if @ref ctf_type can't reliably be translated to the IR
+/// then a NULL shared pointer is returned.
+///
+/// @return a shared pointer to the IR node for the type.
+
+static type_base_sptr
+lookup_type(read_context *ctxt, corpus_sptr corp,
+            translation_unit_sptr tunit, ctf_dict_t *ctf_dictionary,
+            ctf_id_t ctf_type)
+{
+  type_base_sptr result = ctxt->lookup_type(ctf_type);
+
+  if (!result)
+    result = process_ctf_type(ctxt, corp, tunit, ctf_dictionary, ctf_type);
+  return result;
+}
+
+/// Process a CTF archive and create libabigail IR for the types,
+/// variables and function declarations found in the archive.  The IR
+/// is added to the given corpus.
+///
+/// @param ctxt the read context containing the CTF archive to
+/// process.
+/// @param corp the IR corpus to which add the new contents.
+
+static void
+process_ctf_archive(read_context *ctxt, corpus_sptr corp)
+{
+  /* We only have a translation unit.  */
+  translation_unit_sptr ir_translation_unit =
+    std::make_shared<translation_unit>(ctxt->ir_env, "", 64);
+  ir_translation_unit->set_language(translation_unit::LANG_C);
+  corp->add(ir_translation_unit);
+
+  /* Iterate over the CTF dictionaries in the archive.  */
+  int ctf_err;
+  ctf_dict_t *ctf_dict;
+  ctf_next_t *dict_next = NULL;
+  const char *archive_name;
+
+  while ((ctf_dict = ctf_archive_next(ctxt->ctfa, &dict_next, &archive_name,
+                                      0 /* skip_parent */, &ctf_err)) != NULL)
+    {
+      /* Iterate over the CTF types stored in this archive.  */
+      ctf_id_t ctf_type;
+      int type_flag;
+      ctf_next_t *type_next = NULL;
+
+      while ((ctf_type = ctf_type_next(ctf_dict, &type_next, &type_flag,
+                                       1 /* want_hidden */)) != CTF_ERR)
+        {
+          process_ctf_type(ctxt, corp, ir_translation_unit,
+                            ctf_dict, ctf_type);
+        }
+      if (ctf_errno(ctf_dict) != ECTF_NEXT_END)
+        fprintf(stderr, "ERROR from ctf_type_next\n");
+
+      /* Canonicalize all the types generated above.  This must be
+         done "a posteriori" because the processing of types may
+         require other related types to not be already
+         canonicalized.  */
+      ctxt->canonicalize_all_types();
+
+      /* Iterate over the CTF variables stored in this archive.  */
+      ctf_id_t ctf_var_type;
+      ctf_next_t *var_next = NULL;
+      const char *var_name;
+
+      while ((ctf_var_type = ctf_variable_next(ctf_dict, &var_next, &var_name))
+             != CTF_ERR)
+        {
+          type_base_sptr var_type = lookup_type(ctxt, corp, ir_translation_unit,
+                                                ctf_dict, ctf_var_type);
+          if (!var_type)
+            /* Ignore variable if its type can't be sorted out.  */
+            continue;
+
+          var_decl_sptr var_declaration;
+          var_declaration.reset(new var_decl(var_name,
+                                             var_type,
+                                             location(),
+                                             var_name));
+
+          add_decl_to_scope(var_declaration,
+                             ir_translation_unit->get_global_scope());
+        }
+      if (ctf_errno(ctf_dict) != ECTF_NEXT_END)
+        fprintf(stderr, "ERROR from ctf_variable_next\n");
+
+      /* Iterate over the CTF functions stored in this archive.  */
+      ctf_next_t *func_next = NULL;
+      const char *func_name = NULL;
+      ctf_id_t ctf_sym;
+
+      while ((ctf_sym = ctf_symbol_next(ctf_dict, &func_next, &func_name,
+                                        1 /* functions symbols only */) != CTF_ERR))
+      {
+        ctf_id_t ctf_func_type = ctf_lookup_by_name(ctf_dict, func_name);
+        type_base_sptr func_type = lookup_type(ctxt, corp, ir_translation_unit,
+                                               ctf_dict, ctf_func_type);
+        if (!func_type)
+          /* Ignore function if its type can't be sorted out.  */
+          continue;
+
+        elf_symbols func_elf_symbols = ctxt->symtab->lookup_symbol(func_name);
+        if (func_elf_symbols.size() == 0
+            || func_elf_symbols[0]->get_binding() == elf_symbol::LOCAL_BINDING)
+          /* Ignore local functions.  */
+          continue;
+
+        function_decl_sptr func_declaration;
+        func_declaration.reset(new function_decl(func_name,
+                                                 func_type,
+                                                 0 /* is_inline */,
+                                                 location()));
+
+        add_decl_to_scope(func_declaration,
+                           ir_translation_unit->get_global_scope());
+      }
+      if (ctf_errno(ctf_dict) != ECTF_NEXT_END)
+        fprintf(stderr, "ERROR from ctf_symbol_next\n");
+
+      ctf_dict_close(ctf_dict);
+    }
+  if (ctf_err != ECTF_NEXT_END)
+    fprintf(stderr, "ERROR from ctf_archive_next\n");
+
+}
+
+/// Open the ELF file described by the given read context.
+///
+/// @param ctxt the read context.
+/// @return 0 if the ELF file can't be opened.
+/// @return 1 otherwise.
+
+static int
+open_elf_handler(read_context *ctxt)
+{
+  /* libelf requires to negotiate/set the version of ELF.  */
+  if (elf_version(EV_CURRENT) == EV_NONE)
+    return 0;
+
+  /* Open an ELF handler.  */
+  ctxt->elf_fd = open(ctxt->filename.c_str(), O_RDONLY);
+  if (ctxt->elf_fd == -1)
+    return 0;
+
+  ctxt->elf_handler = elf_begin(ctxt->elf_fd, ELF_C_READ, NULL);
+  if (ctxt->elf_handler == NULL)
+    {
+      fprintf(stderr, "cannot open %s: %s\n",
+               ctxt->filename.c_str(), elf_errmsg(elf_errno()));
+      close(ctxt->elf_fd);
+      return 0;
+    }
+
+  return 1;
+}
+
+/// Close the ELF file described by the given read context.
+///
+/// @param ctxt the read context.
+
+static void
+close_elf_handler (read_context *ctxt)
+{
+  /* Finish the ELF handler and close the associated file.  */
+  elf_end(ctxt->elf_handler);
+  close(ctxt->elf_fd);
+}
+
+/// Fill a CTF section description with the information in a given ELF
+/// section.
+///
+/// @param elf_section the ELF section from which to get.
+/// @param ctf_section the CTF section to fill with the raw data.
+
+static void
+fill_ctf_section(Elf_Scn *elf_section, ctf_sect_t *ctf_section)
+{
+  GElf_Shdr section_header_mem, *section_header;
+  Elf_Data *section_data;
+
+  section_header = gelf_getshdr(elf_section, &section_header_mem);
+  section_data = elf_getdata(elf_section, 0);
+
+  ABG_ASSERT (section_header != NULL);
+  ABG_ASSERT (section_data != NULL);
+
+  ctf_section->cts_name = ""; /* This is not actually used by libctf.  */
+  ctf_section->cts_data = (char *) section_data->d_buf;
+  ctf_section->cts_size = section_data->d_size;
+  ctf_section->cts_entsize = section_header->sh_entsize;
+}
+
+/// Slurp certain information from the ELF file described by a given
+/// read context and install it in a libabigail corpus.
+///
+/// @param ctxt the read context
+/// @param corp the libabigail corpus in which to install the info.
+///
+/// @return 0 if there is an error.
+/// @return 1 otherwise.
+
+static int
+slurp_elf_info(read_context *ctxt, corpus_sptr corp)
+{
+  /* Set the ELF architecture.  */
+  GElf_Ehdr eh_mem;
+  GElf_Ehdr *ehdr = gelf_getehdr(ctxt->elf_handler, &eh_mem);
+  corp->set_architecture_name(elf_helpers::e_machine_to_string(ehdr->e_machine));
+
+  /* Read the symtab from the ELF file and set it in the corpus.  */
+  ctxt->symtab =
+    symtab_reader::symtab::load(ctxt->elf_handler, ctxt->ir_env,
+                                0 /* No suppressions.  */);
+  corp->set_symtab(ctxt->symtab);
+
+  /* Get the raw ELF section contents for libctf.  */
+  Elf_Scn *ctf_scn = elf_helpers::find_section(ctxt->elf_handler, ".ctf", SHT_PROGBITS);
+  Elf_Scn *symtab_scn = elf_helpers::find_symbol_table_section(ctxt->elf_handler);
+  Elf_Scn *strtab_scn = elf_helpers::find_strtab_for_symtab_section(ctxt->elf_handler,
+                                                                    symtab_scn);
+
+  if (ctf_scn == NULL || symtab_scn == NULL || strtab_scn == NULL)
+    return 0;
+
+  fill_ctf_section(ctf_scn, &ctxt->ctf_sect);
+  fill_ctf_section(symtab_scn, &ctxt->symtab_sect);
+  fill_ctf_section(strtab_scn, &ctxt->strtab_sect);
+
+  return 1;
+}
+
+/// Create and return a new read context to process CTF information
+/// from a given ELF file.
+///
+/// @param elf_path the patch of some ELF file.
+/// @param env a libabigail IR environment.
+
+read_context_sptr
+create_read_context(const std::string& elf_path,
+                    ir::environment *env)
+{
+  read_context_sptr result(new read_context(elf_path, env));
+  return result;
+}
+
+/// Read the CTF information from some source described by a given
+/// read context and process it to create a libabigail IR corpus.
+/// Store the corpus in the same read context.
+///
+/// @param ctxt the read context to use.
+///
+/// @param status the resulting status of the corpus read.
+///
+/// @return a shared pointer to the read corpus.
+
+corpus_sptr
+read_corpus(read_context *ctxt, elf_reader::status &status)
+{
+  corpus_sptr corp
+    = std::make_shared<corpus>(ctxt->ir_env, ctxt->filename);
+
+  /* Be optimist.  */
+  status = elf_reader::STATUS_OK;
+
+  /* Open the ELF file.  */
+  if (!open_elf_handler(ctxt))
+    {
+      status = elf_reader::STATUS_DEBUG_INFO_NOT_FOUND;
+      return corp;
+    }
+
+  /* Set some properties of the corpus first.  */
+  corp->set_origin(corpus::CTF_ORIGIN);
+  if (!slurp_elf_info(ctxt, corp))
+    {
+      status = elf_reader::STATUS_NO_SYMBOLS_FOUND;
+      return corp;
+    }
+
+  /* Build the ctfa from the contents of the relevant ELF sections,
+     and process the CTF archive in the read context, if any.
+     Information about the types, variables, functions, etc contained
+     in the archive are added to the given corpus.  */
+  int errp;
+  ctxt->ctfa = ctf_arc_bufopen(&ctxt->ctf_sect, &ctxt->symtab_sect,
+                               &ctxt->strtab_sect, &errp);
+  if (ctxt->ctfa == NULL)
+    status = elf_reader::STATUS_DEBUG_INFO_NOT_FOUND;
+  else
+    process_ctf_archive(ctxt, corp);
+
+  /* Cleanup and return.  */
+  close_elf_handler(ctxt);
+  return corp;
+}
+
+/// Read the CTF information from some source described by a given
+/// read context and process it to create a libabigail IR corpus.
+/// Store the corpus in the same read context.
+///
+/// @param ctxt the read context to use.
+///
+/// @param status the resulting status of the corpus read.
+///
+/// @return a shared pointer to the read corpus.
+
+corpus_sptr
+read_corpus(const read_context_sptr &ctxt, elf_reader::status &status)
+{return read_corpus(ctxt.get(), status);}
+
+} // End of namespace ctf_reader
+} // End of namespace abigail
diff --git a/src/abg-dwarf-reader.cc b/src/abg-dwarf-reader.cc
index 160f443..ffcf749 100644
--- a/src/abg-dwarf-reader.cc
+++ b/src/abg-dwarf-reader.cc
@@ -56,6 +56,7 @@
 #endif
 
 using std::string;
+using namespace abigail::elf_reader;
 
 namespace abigail
 {
@@ -824,10 +825,6 @@
   elf_symbol::binding sym_binding;
   elf_symbol::visibility sym_visibility;
   bool found = false;
-  Elf_Scn *strings_section = find_ksymtab_strings_section(elf_handle);
-  size_t strings_ndx = strings_section
-    ? elf_ndxscn(strings_section)
-    : 0;
 
   do
     {
@@ -856,8 +853,7 @@
 			       sym_binding,
 			       symbol.st_shndx != SHN_UNDEF,
 			       symbol.st_shndx == SHN_COMMON,
-			       ver, sym_visibility,
-			       symbol.st_shndx == strings_ndx);
+			       ver, sym_visibility);
 	  syms_found.push_back(symbol_found);
 	  found = true;
 	}
@@ -1103,10 +1099,6 @@
   elf_symbol::type sym_type;
   elf_symbol::binding sym_binding;
   elf_symbol::visibility sym_visibility;
-  Elf_Scn *strings_section = find_ksymtab_strings_section(elf_handle);
-    size_t strings_ndx = strings_section
-    ? elf_ndxscn(strings_section)
-    : 0;
 
   // Let's walk the hash table and record the versions of all the
   // symbols which name equal sym_name.
@@ -1151,8 +1143,7 @@
 			       sym_type, sym_binding,
 			       symbol.st_shndx != SHN_UNDEF,
 			       symbol.st_shndx == SHN_COMMON,
-			       ver, sym_visibility,
-			       symbol.st_shndx == strings_ndx);
+			       ver, sym_visibility);
 	  syms_found.push_back(symbol_found);
 	  found = true;
 	}
@@ -1275,10 +1266,6 @@
   char* name_str = 0;
   elf_symbol::version ver;
   bool found = false;
-  Elf_Scn *strings_section = find_ksymtab_strings_section(elf_handle);
-  size_t strings_ndx = strings_section
-    ? elf_ndxscn(strings_section)
-    : 0;
 
   for (size_t i = 0; i < symcount; ++i)
     {
@@ -1307,8 +1294,7 @@
 	    elf_symbol::create(env, i, sym->st_size,
 			       name_str, sym_type,
 			       sym_binding, sym_is_defined,
-			       sym_is_common, ver, sym_visibility,
-			       sym->st_shndx == strings_ndx);
+			       sym_is_common, ver, sym_visibility);
 	  syms_found.push_back(symbol_found);
 	  found = true;
 	}
@@ -2130,7 +2116,6 @@
   corpus::exported_decls_builder* exported_decls_builder_;
   options_type			options_;
   bool				drop_undefined_syms_;
-  bool				merge_translation_units_;
   read_context();
 
 private:
@@ -2274,7 +2259,6 @@
     options_.load_in_linux_kernel_mode = linux_kernel_mode;
     options_.load_all_types = load_all_types;
     drop_undefined_syms_ = false;
-    merge_translation_units_ = false;
     load_in_linux_kernel_mode(linux_kernel_mode);
   }
 
@@ -2362,22 +2346,6 @@
   drop_undefined_syms(bool f)
   {drop_undefined_syms_ = f;}
 
-  /// Setter for the flag that tells us if we are merging translation
-  /// units.
-  ///
-  /// @param f the new value of the flag.
-  void
-  merge_translation_units(bool f)
-  {merge_translation_units_ = f;}
-
-  /// Getter for the flag that tells us if we are merging translation
-  /// units.
-  ///
-  /// @return true iff we are merging translation units.
-  bool
-  merge_translation_units() const
-  {return merge_translation_units_;}
-
   /// Getter of the suppression specifications to be used during
   /// ELF/DWARF parsing.
   ///
@@ -4180,10 +4148,13 @@
     const environment* e = l->get_environment();
     ABG_ASSERT(!e->canonicalization_is_done());
 
-    bool s = e->decl_only_class_equals_definition();
+    bool s0 = e->decl_only_class_equals_definition();
+    bool s1 = e->use_enum_binary_only_equality();
     e->decl_only_class_equals_definition(true);
+    e->use_enum_binary_only_equality(true);
     bool equal = l == r;
-    e->decl_only_class_equals_definition(s);
+    e->decl_only_class_equals_definition(s0);
+    e->use_enum_binary_only_equality(s1);
     return equal;
   }
 
@@ -4651,6 +4622,12 @@
 	  ABG_ASSERT(is_member_function(i->second));
 	  ABG_ASSERT(get_member_function_is_virtual(i->second));
 	  i->second->set_symbol(sym);
+	  // The function_decl now has an associated (public) ELF symbol so
+	  // it ought to be advertised as being public.
+	  i->second->set_is_in_public_symbol_table(true);
+	  // Add the function to the set of exported decls of the
+	  // current corpus.
+	  maybe_add_fn_to_exported_decls(i->second.get());
 	  if (do_log())
 	    cerr << "fixed up '"
 		 << i->second->get_pretty_representation()
@@ -6181,10 +6158,10 @@
 		       bool is_required_decl_spec = false);
 
 static void
-finish_member_function_reading(Dwarf_Die*		 die,
-			       const function_decl_sptr& f,
-			       const class_or_union_sptr& klass,
-			       read_context&		 ctxt);
+finish_member_function_reading(Dwarf_Die*			die,
+			       const function_decl_sptr&	f,
+			       const class_or_union_sptr	klass,
+			       read_context&			ctxt);
 
 /// Setter of the debug info root path for a dwarf reader context.
 ///
@@ -6244,17 +6221,6 @@
 set_drop_undefined_syms(read_context& ctxt, bool f)
 {ctxt.drop_undefined_syms(f);}
 
-/// Setter of the "merge_translation_units" flag.
-///
-/// This flag tells if we should merge translation units.
-///
-/// @param ctxt the read context to consider for this flag.
-///
-/// @param f the value of the flag.
-void
-set_merge_translation_units(read_context& ctxt, bool f)
-{ctxt.merge_translation_units(f);}
-
 /// Setter of the "do_log" flag.
 ///
 /// This flag tells if we should emit verbose logs for various
@@ -6479,15 +6445,15 @@
 /// @return true if the DIE has a flag attribute named @p attr_name,
 /// false otherwise.
 static bool
-die_flag_attribute(Dwarf_Die* die,
+die_flag_attribute(const Dwarf_Die* die,
 		   unsigned attr_name,
 		   bool& flag,
 		   bool recursively = true)
 {
   Dwarf_Attribute attr;
   if (recursively
-      ? !dwarf_attr_integrate(die, attr_name, &attr)
-      : !dwarf_attr(die, attr_name, &attr))
+      ? !dwarf_attr_integrate(const_cast<Dwarf_Die*>(die), attr_name, &attr)
+      : !dwarf_attr(const_cast<Dwarf_Die*>(die), attr_name, &attr))
     return false;
 
   bool f = false;
@@ -6731,13 +6697,56 @@
 /// @return true if a DW_AT_external attribute is present and its
 /// value is set to the true; return false otherwise.
 static bool
-die_is_public_decl(Dwarf_Die* die)
+die_is_public_decl(const Dwarf_Die* die)
 {
   bool is_public = false;
   die_flag_attribute(die, DW_AT_external, is_public);
   return is_public;
 }
 
+/// Test if a DIE is effectively public.
+///
+/// This is meant to return true when either the DIE is public or when
+/// it's a variable DIE that is at (global) namespace level.
+///
+/// @return true iff either the DIE is public or is a variable DIE
+/// that is at (global) namespace level.
+static bool
+die_is_effectively_public_decl(const read_context& ctxt,
+			       const Dwarf_Die* die)
+{
+  if (die_is_public_decl(die))
+    return true;
+
+  unsigned tag = dwarf_tag(const_cast<Dwarf_Die*>(die));
+  if (tag == DW_TAG_variable || tag == DW_TAG_member)
+    {
+      // The DIE is a variable.
+      Dwarf_Die parent_die;
+      size_t where_offset = 0;
+      if (!get_parent_die(ctxt, die, parent_die, where_offset))
+	return false;
+
+      tag = dwarf_tag(&parent_die);
+      if (tag == DW_TAG_compile_unit
+	  || tag == DW_TAG_partial_unit
+	  || tag == DW_TAG_type_unit)
+	// The DIE is at global scope.
+	return true;
+
+      if (tag == DW_TAG_namespace)
+	{
+	  string name = die_name(&parent_die);
+	  if (name.empty())
+	    // The DIE at unnamed namespace scope, so it's not public.
+	    return false;
+	  // The DIE is at namespace scope.
+	  return true;
+	}
+    }
+  return false;
+}
+
 /// Test whether a given DIE represents a declaration-only DIE.
 ///
 /// That is, if the DIE has the DW_AT_declaration flag set.
@@ -8459,31 +8468,35 @@
 // </location expression evaluation>
 // -----------------------------------
 
-/// Convert the value of the DW_AT_bit_offset attribute into the value
-/// of the DW_AT_data_bit_offset attribute.
+/// Convert a DW_AT_bit_offset attribute value into the same value as
+/// DW_AT_data_bit_offset - 8 * DW_AT_data_member_location.
 ///
 /// On big endian machines, the value of the DW_AT_bit_offset
+/// attribute + 8 * the value of the DW_AT_data_member_location
 /// attribute is the same as the value of the DW_AT_data_bit_offset
 /// attribute.
 ///
 /// On little endian machines however, the situation is different.
 /// The DW_AT_bit_offset value for a bit field is the number of bits
-/// to the left of the most significant bit of the bit field.
+/// to the left of the most significant bit of the bit field, within
+/// the integer value at DW_AT_data_member_location.
 ///
 /// The DW_AT_data_bit_offset offset value is the number of bits to
-/// the right of the least significant bit of the bit field.
+/// the right of the least significant bit of the bit field, again
+/// relative to the containing integer value.
 ///
 /// In other words, DW_AT_data_bit_offset is what everybody would
-/// instinctively think of as being the "offset of the bit
-/// field". DW_AT_bit_offset however is very counter-intuitive on
-/// little endian machines.
+/// instinctively think of as being the "offset of the bit field". 8 *
+/// DW_AT_data_member_location + DW_AT_bit_offset however is very
+/// counter-intuitive on little endian machines.
 ///
 /// This function thus reads the value of a DW_AT_bit_offset property
 /// of a DIE and converts it into what the DW_AT_data_bit_offset would
-/// have been if it was present.
+/// have been if it was present, ignoring the contribution of
+/// DW_AT_data_member_location.
 ///
 /// Note that DW_AT_bit_offset has been made obsolete starting from
-/// DWARF5.
+/// DWARF5 (for GCC; Clang still emits it).
 ///
 /// If you like coffee and it's not too late, now might be a good time
 /// to have a coffee break.  Otherwise if it's late at night, you
@@ -8491,6 +8504,9 @@
 /// read this.
 ///
 ///
+/// In what follows, the bit fields are all contained within the first
+/// whole int of the struct, so DW_AT_data_member_location is 0.
+///
 /// Okay, to have a better idea of what DW_AT_bit_offset and
 /// DW_AT_data_bit_offset represent, let's consider a struct 'S' which
 /// have bit fields data members defined as:
@@ -8631,8 +8647,9 @@
 ///
 /// @param offset this is the output parameter into which the value of
 /// the DW_AT_bit_offset is put, converted as if it was the value of
-/// the DW_AT_data_bit_offset parameter.  This parameter is set iff
-/// the function returns true.
+/// the DW_AT_data_bit_offset parameter, less the contribution of
+/// DW_AT_data_member_location.  This parameter is set iff the
+/// function returns true.
 ///
 /// @return true if DW_AT_bit_offset was found on @p die.
 static bool
@@ -8676,6 +8693,37 @@
   return true;
 }
 
+/// Get the value of the DW_AT_data_member_location of the given DIE
+/// attribute as an constant.
+///
+/// @param die the DIE to read the attribute from.
+///
+/// @param offset the attribute as a constant value.  This is set iff
+/// the function returns true.
+///
+/// @return true if the attribute exists and has a constant value.  In
+/// that case the offset is set to the value.
+static bool
+die_constant_data_member_location(const Dwarf_Die *die,
+				  int64_t& offset)
+{
+  if (!die)
+    return false;
+
+  Dwarf_Attribute attr;
+  if (!dwarf_attr(const_cast<Dwarf_Die*>(die),
+		  DW_AT_data_member_location,
+		  &attr))
+    return false;
+
+  Dwarf_Word val;
+  if (dwarf_formudata(&attr, &val) != 0)
+    return false;
+
+  offset = val;
+  return true;
+}
+
 /// Get the offset of a struct/class member as represented by the
 /// value of the DW_AT_data_member_location attribute.
 ///
@@ -8683,12 +8731,13 @@
 /// DW_AT_data_member_location is not necessarily a constant that one
 /// would just read and be done with it.  Rather, it can be a DWARF
 /// expression that one has to interpret.  In general, the offset can
-/// be given by the DW_AT_bit_offset or DW_AT_data_bit_offset
-/// attribute.  In that case the offset is a constant.  But it can
-/// also be given by the DW_AT_data_member_location attribute.  In
-/// that case it's a DWARF location expression.
+/// be given by the DW_AT_data_bit_offset or by the
+/// DW_AT_data_member_location attribute and optionally the
+/// DW_AT_bit_offset attribute.  The bit offset attributes are
+/// always simple constants, but the DW_AT_data_member_location
+/// attribute is a DWARF location expression.
 ///
-/// When the it's the DW_AT_data_member_location that is present,
+/// When it's the DW_AT_data_member_location that is present,
 /// there are three cases to possibly take into account:
 ///
 ///     1/ The offset in the vtable where the offset of a virtual base
@@ -8717,12 +8766,12 @@
 ///     the offset of the function in the vtable.  In this case this
 ///     function returns that constant.
 ///
-///@param ctxt the read context to consider.
+/// @param ctxt the read context to consider.
 ///
-///@param die the DIE to read the information from.
+/// @param die the DIE to read the information from.
 ///
-///@param offset the resulting constant offset, in bits.  This
-///argument is set iff the function returns true.
+/// @param offset the resulting constant offset, in bits.  This
+/// argument is set iff the function returns true.
 static bool
 die_member_offset(const read_context& ctxt,
 		  const Dwarf_Die* die,
@@ -8730,49 +8779,62 @@
 {
   Dwarf_Op* expr = NULL;
   uint64_t expr_len = 0;
-  uint64_t off = 0;
+  uint64_t bit_offset = 0;
 
   // First let's see if the DW_AT_data_bit_offset attribute is
   // present.
-  if (die_unsigned_constant_attribute(die, DW_AT_data_bit_offset, off))
+  if (die_unsigned_constant_attribute(die, DW_AT_data_bit_offset, bit_offset))
     {
-      offset = off;
+      offset = bit_offset;
       return true;
     }
 
-  // Otherwise, let's see if the DW_AT_bit_offset attribute is
-  // present.  On little endian machines, we need to convert this
-  // attribute into what it would have been if the
-  // DW_AT_data_bit_offset was used instead.  In other words,
-  // DW_AT_bit_offset needs to be converted into a
-  // human-understandable form that represents the offset of the
-  // bitfield data member it describes.  For details about the
-  // conversion, please read the extensive comments of
+  // First try to read DW_AT_data_member_location as a plain constant.
+  // We do this because the generic method using die_location_expr
+  // might hit a bug in elfutils libdw dwarf_location_expression only
+  // fixed in elfutils 0.184+. The bug only triggers if the attribute
+  // is expressed as a (DWARF 5) DW_FORM_implicit_constant. But we
+  // handle all constants here because that is more consistent (and
+  // slightly faster in the general case where the attribute isn't a
+  // full DWARF expression).
+  if (!die_constant_data_member_location(die, offset))
+    {
+      // Otherwise, let's see if the DW_AT_data_member_location
+      // attribute and, optionally, the DW_AT_bit_offset attributes
+      // are present.
+      if (!die_location_expr(die, DW_AT_data_member_location,
+			     &expr, &expr_len))
+	return false;
+
+      // The DW_AT_data_member_location attribute is present.  Let's
+      // evaluate it and get its constant sub-expression and return
+      // that one.
+      if (!eval_quickly(expr, expr_len, offset))
+	{
+	  bool is_tls_address = false;
+	  if (!eval_last_constant_dwarf_sub_expr(expr, expr_len,
+						 offset, is_tls_address,
+						 ctxt.dwarf_expr_eval_ctxt()))
+	    return false;
+	}
+    }
+  offset *= 8;
+
+  // On little endian machines, we need to convert the
+  // DW_AT_bit_offset attribute into a relative offset to 8 *
+  // DW_AT_data_member_location equal to what DW_AT_data_bit_offset
+  // would be if it were used instead.
+  //
+  // In other words, before adding it to 8 *
+  // DW_AT_data_member_location, DW_AT_bit_offset needs to be
+  // converted into a human-understandable form that represents the
+  // offset of the bitfield data member it describes.  For details
+  // about the conversion, please read the extensive comments of
   // read_and_convert_DW_at_bit_offset.
   bool is_big_endian = architecture_is_big_endian(ctxt.elf_handle());
-  if (read_and_convert_DW_at_bit_offset(die, is_big_endian, off))
-    {
-      offset = off;
-      return true;
-    }
+  if (read_and_convert_DW_at_bit_offset(die, is_big_endian, bit_offset))
+    offset += bit_offset;
 
-  if (!die_location_expr(die, DW_AT_data_member_location, &expr, &expr_len))
-    return false;
-
-  // Otherwise, the DW_AT_data_member_location attribute is present.
-  // In that case, let's evaluate it and get its constant
-  // sub-expression and return that one.
-
-  if (!eval_quickly(expr, expr_len, offset))
-    {
-      bool is_tls_address = false;
-      if (!eval_last_constant_dwarf_sub_expr(expr, expr_len,
-					     offset, is_tls_address,
-					     ctxt.dwarf_expr_eval_ctxt()))
-	return false;
-    }
-
-  offset *= 8;
   return true;
 }
 
@@ -8796,18 +8858,31 @@
   uint64_t expr_len = 0;
 
   is_tls_address = false;
-  if (!die_location_expr(die, DW_AT_location, &expr, &expr_len))
+
+  if (!die)
     return false;
 
-  int64_t addr = 0;
-  if (!eval_last_constant_dwarf_sub_expr(expr, expr_len, addr, is_tls_address))
+  Dwarf_Attribute attr;
+  if (!dwarf_attr_integrate(const_cast<Dwarf_Die*>(die), DW_AT_location, &attr))
     return false;
 
-  address = addr;
+  if (dwarf_getlocation(&attr, &expr, &expr_len))
+    return false;
+  // Ignore location expressions where reading them succeeded but
+  // their length is 0.
+  if (expr_len == 0)
+    return false;
+
+  Dwarf_Attribute result;
+  if (!dwarf_getlocation_attr(&attr, expr, &result))
+    // A location that has been interpreted as an address.
+    return !dwarf_formaddr(&result, &address);
+
+  // Just get the address out of the number field.
+  address = expr->number;
   return true;
 }
 
-
 /// Return the index of a function in its virtual table.  That is,
 /// return the value of the DW_AT_vtable_elem_location attribute.
 ///
@@ -9672,6 +9747,7 @@
       // this to be a lot of hassle for no great return.  Until proven
       // otherwise, of course.
       repr = "string type";
+      break;
 
     case DW_TAG_unspecified_type:
     case DW_TAG_ptr_to_member_type:
@@ -10276,6 +10352,16 @@
 	  }
 	if (found_l_child != found_r_child)
 	  result = false;
+	// Compare the types of the elements of the array.
+	Dwarf_Die ltype_die, rtype_die;
+	bool found_ltype = die_die_attribute(l, DW_AT_type, ltype_die);
+	bool found_rtype = die_die_attribute(r, DW_AT_type, rtype_die);
+	ABG_ASSERT(found_ltype && found_rtype);
+
+	if (!compare_dies(ctxt, &ltype_die, &rtype_die,
+			  aggregates_being_compared,
+			  update_canonical_dies_on_the_fly))
+	  return false;
       }
       break;
 
@@ -11069,8 +11155,8 @@
       return translation_unit::LANG_Ada95;
     case DW_LANG_Fortran95:
       return translation_unit::LANG_Fortran95;
-    case DW_LANG_PL1:
-      return translation_unit::LANG_PL1;
+    case DW_LANG_PLI:
+      return translation_unit::LANG_PLI;
     case DW_LANG_ObjC:
       return translation_unit::LANG_ObjC;
     case DW_LANG_ObjC_plus_plus:
@@ -11176,7 +11262,7 @@
     case translation_unit::LANG_Java:
       value = 0;
       break;
-    case translation_unit::LANG_PL1:
+    case translation_unit::LANG_PLI:
       value = 1;
       break;
     case translation_unit::LANG_UPC:
@@ -11267,50 +11353,29 @@
     }
   string compilation_dir = die_string_attribute(die, DW_AT_comp_dir);
 
-  uint64_t lang = 0;
-  die_unsigned_constant_attribute(die, DW_AT_language, lang);
-  translation_unit::language language = dwarf_language_to_tu_language(lang);
-
-  corpus_sptr corp = ctxt.current_corpus();
-
-  if (ctxt.merge_translation_units())
-    {
-      // See if there is already a translation for the address_size
-      // and language. If so, just reuse that one.
-      for (const auto& tu : corp->get_translation_units())
-	{
-	  if (tu->get_address_size() == address_size
-	      && tu->get_language() == language)
-	    {
-	      result = tu;
-	      break;
-	    }
-	}
-    }
-  else
-    {
-      // See if the same translation unit exits already in the current
-      // corpus.  Sometimes, the same translation unit can be present
-      // several times in the same debug info.  The content of the
-      // different instances of the translation unit are different.  So to
-      // represent that, we are going to re-use the same translation
-      // unit.  That is, it's going to be the union of all the translation
-      // units of the same path.
-      const std::string& abs_path =
-	  compilation_dir.empty() ? path : compilation_dir + "/" + path;
-      result = corp->find_translation_unit(abs_path);
-    }
+  // See if the same translation unit exits already in the current
+  // corpus.  Sometimes, the same translation unit can be present
+  // several times in the same debug info.  The content of the
+  // different instances of the translation unit are different.  So to
+  // represent that, we are going to re-use the same translation
+  // unit.  That is, it's going to be the union of all the translation
+  // units of the same path.
+  {
+    const string& abs_path =
+      compilation_dir.empty() ? path : compilation_dir + "/" + path;
+    result = ctxt.current_corpus()->find_translation_unit(abs_path);
+  }
 
   if (!result)
     {
       result.reset(new translation_unit(ctxt.env(),
-					(ctxt.merge_translation_units()
-					 ? "" : path),
+					path,
 					address_size));
-      if (!ctxt.merge_translation_units())
-	result->set_compilation_dir_path(compilation_dir);
+      result->set_compilation_dir_path(compilation_dir);
       ctxt.current_corpus()->add(result);
-      result->set_language(language);
+      uint64_t l = 0;
+      die_unsigned_constant_attribute(die, DW_AT_language, l);
+      result->set_language(dwarf_language_to_tu_language(l));
     }
 
   ctxt.cur_transl_unit(result);
@@ -11689,10 +11754,10 @@
 ///
 /// @param ctxt the context used to read the ELF/DWARF information.
 static void
-finish_member_function_reading(Dwarf_Die*		  die,
-			       const function_decl_sptr&  f,
-			       const class_or_union_sptr& klass,
-			       read_context&		  ctxt)
+finish_member_function_reading(Dwarf_Die*			die,
+			       const function_decl_sptr&	f,
+			       const class_or_union_sptr	klass,
+			       read_context&			ctxt)
 {
   ABG_ASSERT(klass);
 
@@ -11768,7 +11833,8 @@
   set_member_access_specifier(m, access);
   if (vindex != -1)
     set_member_function_vtable_offset(m, vindex);
-  set_member_function_is_virtual(m, is_virtual);
+  if (is_virtual)
+    set_member_function_is_virtual(m, is_virtual);
   set_member_is_static(m, is_static);
   set_member_function_is_ctor(m, is_ctor);
   set_member_function_is_dtor(m, is_dtor);
@@ -12183,6 +12249,9 @@
   if (klass)
     {
       res = result = klass;
+      if (has_child && klass->get_is_declaration_only()
+	  && klass->get_definition_of_declaration())
+	res = result = is_class_type(klass->get_definition_of_declaration());
       if (loc)
 	result->set_location(loc);
     }
@@ -12200,7 +12269,7 @@
       ABG_ASSERT(result);
     }
 
-  if (size)
+  if (size != result->get_size_in_bits())
     result->set_size_in_bits(size);
 
   if (klass)
@@ -12834,28 +12903,12 @@
 
   decl_base_sptr result = t;
   type_base_sptr u = t->get_underlying_type();
-  environment* env = t->get_environment();
 
-  if (t->get_cv_quals() & qualified_type_def::CV_CONST
-      && (is_reference_type(u)))
-    {
-      // Let's strip only the const qualifier.  To do that, the "const"
-      // qualified is turned into a no-op "none" qualified.
-      result.reset(new qualified_type_def
-		   (u, t->get_cv_quals() & ~qualified_type_def::CV_CONST,
-		    t->get_location()));
-      ctxt.schedule_type_for_late_canonicalization(is_type(result));
-    }
-  else if (t->get_cv_quals() & qualified_type_def::CV_CONST
-	   && env->is_void_type(u))
-    {
-      // So this type is a "const void".  Let's strip the "const"
-      // qualifier out and make this just be "void", so that a "const
-      // void" type and a "void" type compare equal after going through
-      // this function.
-      result = is_decl(u);
-    }
-  else if (is_array_type(u) || is_typedef_of_array(u))
+  result = strip_useless_const_qualification(t);
+  if (result.get() != t.get())
+    return result;
+
+  if (is_array_type(u) || is_typedef_of_array(u))
     {
       array_type_def_sptr array;
       scope_decl * scope = 0;
@@ -13187,7 +13240,6 @@
 				   /*alignment=*/0));
   ctxt.associate_die_to_type(die, result, where_offset);
   ctxt.die_wip_function_types_map(source)[dwarf_dieoffset(die)] = result;
-  ctxt.associate_die_repr_to_fn_type_per_tu(die, result);
 
   type_base_sptr return_type;
   Dwarf_Die ret_type_die;
@@ -13263,6 +13315,10 @@
 
   tu->bind_function_type_life_time(result);
 
+  result->set_is_artificial(true);
+
+  ctxt.associate_die_repr_to_fn_type_per_tu(die, result);
+
   {
     die_function_type_map_type::const_iterator i =
       ctxt.die_wip_function_types_map(source).
@@ -13607,9 +13663,15 @@
       ABG_ASSERT(utype);
       result.reset(new typedef_decl(name, utype, loc, linkage_name));
 
-      if (class_decl_sptr klass = is_class_type(utype))
-	if (is_anonymous_type(klass))
-	  klass->set_naming_typedef(result);
+      if ((is_class_or_union_type(utype) || is_enum_type(utype))
+	  && is_anonymous_type(utype))
+	{
+	  // This is a naming typedef for an enum or a class.  Let's
+	  // mark the underlying decl as such.
+	  decl_base_sptr decl = is_decl(utype);
+	  ABG_ASSERT(decl);
+	  decl->set_naming_typedef(result);
+	}
     }
 
   ctxt.associate_die_to_type(die, result, where_offset);
@@ -13841,6 +13903,16 @@
 /// Note that if a member function declaration with the same signature
 /// (pretty representation) as one of the DIE we are looking at
 /// exists, this function returns that existing function declaration.
+/// Similarly, if there is already a constructed member function with
+/// the same linkage name as the one on the DIE, this function returns
+/// that member function.
+///
+/// Also note that the function_decl IR returned by this function must
+/// be passed to finish_member_function_reading because several
+/// properties from the DIE are actually read by that function, and
+/// the corresponding properties on the function_decl IR are updated
+/// accordingly.  This is done to support "updating" a function_decl
+/// IR with properties scathered across several DIEs.
 ///
 /// @param ctxt the read context to use.
 ///
@@ -13876,7 +13948,27 @@
   if (function_is_suppressed(ctxt, scope, fn_die, is_declaration_only))
     return fn;
 
-  if (!result)
+  string name = die_name(fn_die);
+  string linkage_name = die_linkage_name(fn_die);
+  bool is_dtor = !name.empty() && name[0]== '~';
+  bool is_virtual = false;
+  if (is_dtor)
+    {
+      Dwarf_Attribute attr;
+      if (dwarf_attr_integrate(const_cast<Dwarf_Die*>(fn_die),
+			       DW_AT_vtable_elem_location,
+			       &attr))
+	is_virtual = true;
+    }
+
+
+  // If we've already built an IR for a function with the same
+  // signature (from another DIE), reuse it, unless that function is a
+  // virtual C++ destructor.  Several virtual C++ destructors with the
+  // same signature can be implemented by several different ELF
+  // symbols.  So re-using C++ destructors like that can lead to us
+  // missing some destructors.
+  if (!result && (!(is_dtor && is_virtual)))
     if ((fn = is_function_decl(ctxt.lookup_artifact_from_die(fn_die))))
       {
 	fn = maybe_finish_function_decl_reading(ctxt, fn_die, where_offset, fn);
@@ -13885,7 +13977,22 @@
 	return fn;
       }
 
-  fn = build_function_decl(ctxt, fn_die, where_offset, result);
+  // If a member function with the same linkage name as the one
+  // carried by the DIE already exists, then return it.
+  if (class_decl* klass = is_class_type(scope))
+    {
+      string linkage_name = die_linkage_name(fn_die);
+      fn = klass->find_member_function_sptr(linkage_name);
+    }
+
+  if (!fn || !fn->get_symbol())
+    // We haven't yet been able to construct a function IR, or, we
+    // have one 'partial' function IR that doesn't have any associated
+    // symbol yet.  Note that in the later case, a function IR without
+    // any associated symbol will be dropped on the floor by
+    // potential_member_fn_should_be_dropped.  So let's build or a new
+    // function IR or complete the existing partial IR.
+    fn = build_function_decl(ctxt, fn_die, where_offset, result);
 
   return fn;
 }
@@ -14091,6 +14198,7 @@
 					       type_location,
 					       decl_base::VISIBILITY_DEFAULT));
 	  klass->set_is_declaration_only(true);
+	  klass->set_is_artificial(die_is_artificial(type_die));
 	  add_decl_to_scope(klass, scope);
 	  ctxt.associate_die_to_type(type_die, klass, where_offset);
 	  ctxt.maybe_schedule_declaration_only_class_for_resolution(klass);
@@ -14119,6 +14227,7 @@
 							    underlying_type,
 							    enumeratorz,
 							    linkage_name));
+	  enum_type->set_is_artificial(die_is_artificial(type_die));
 	  add_decl_to_scope(enum_type, scope);
 	  result = enum_type;
 	}
@@ -14148,8 +14257,7 @@
 		       /*symbol is defined=*/ true,
 		       /*symbol is common=*/ false,
 		       /*symbol version=*/ ver,
-		       /*symbol visibility=*/elf_symbol::DEFAULT_VISIBILITY,
-		       /*symbol is linux string cst=*/false);
+		       /*symbol visibility=*/elf_symbol::DEFAULT_VISIBILITY);
   return result;
 }
 
@@ -14281,14 +14389,7 @@
 read_debug_info_into_corpus(read_context& ctxt)
 {
   ctxt.clear_per_corpus_data();
-
-  if (!ctxt.current_corpus())
-    {
-      corpus_sptr corp (new corpus(ctxt.env(), ctxt.elf_path()));
-      ctxt.current_corpus(corp);
-      if (!ctxt.env())
-	ctxt.env(corp->get_environment());
-    }
+  ctxt.current_corpus(std::make_shared<corpus>(ctxt.env(), ctxt.elf_path()));
 
   // First set some mundane properties of the corpus gathered from
   // ELF.
@@ -14317,6 +14418,11 @@
   ctxt.exported_decls_builder
     (ctxt.current_corpus()->get_exported_decls_builder().get());
 
+#ifdef WITH_DEBUG_SELF_COMPARISON
+  if (ctxt.env()->self_comparison_debug_is_on())
+    ctxt.env()->set_self_comparison_debug_input(ctxt.current_corpus());
+#endif
+
   // Walk all the DIEs of the debug info to build a DIE -> parent map
   // useful for get_die_parent() to work.
   {
@@ -14489,6 +14595,11 @@
       }
   }
 
+#ifdef WITH_DEBUG_SELF_COMPARISON
+  if (ctxt.env()->self_comparison_debug_is_on())
+    ctxt.env()->set_self_comparison_debug_input(ctxt.current_corpus());
+#endif
+
   return ctxt.current_corpus();
 }
 
@@ -14558,6 +14669,8 @@
     // types because they can be edited (in particular by
     // maybe_strip_qualification) after they are initially built.
     ctxt.schedule_type_for_late_canonicalization(die);
+  else if (is_decl(t) && is_decl(t)->get_is_anonymous())
+    ctxt.schedule_type_for_late_canonicalization(t);
   else if ((is_function_type(t)
 	    && ctxt.is_wip_function_type_die_offset(die_offset, source))
 	   || type_has_non_canonicalized_subtype(t))
@@ -14600,7 +14713,8 @@
       || is_union_type(peeled_type)
       || is_function_type(peeled_type)
       || is_array_type(peeled_type)
-      || is_qualified_type(peeled_type))
+      || is_qualified_type(peeled_type)
+      ||(is_decl(peeled_type) && is_decl(peeled_type)->get_is_anonymous()))
     // We delay canonicalization of classes/unions or typedef,
     // pointers, references and array to classes/unions.  This is
     // because the (underlying) class might not be finished yet and we
@@ -14857,13 +14971,16 @@
 	bool type_suppressed =
 	  type_is_suppressed(ctxt, scope, die, type_is_private);
 	if (type_suppressed && type_is_private)
-	  // The type is suppressed because it's private.  If other
-	  // non-suppressed and declaration-only instances of this
-	  // type exist in the current corpus, then it means those
-	  // non-suppressed instances are opaque versions of the
-	  // suppressed private type.  Lets return one of these opaque
-	  // types then.
-	  result = get_opaque_version_of_type(ctxt, scope, die, where_offset);
+	  {
+	    // The type is suppressed because it's private.  If other
+	    // non-suppressed and declaration-only instances of this
+	    // type exist in the current corpus, then it means those
+	    // non-suppressed instances are opaque versions of the
+	    // suppressed private type.  Lets return one of these opaque
+	    // types then.
+	    result = get_opaque_version_of_type(ctxt, scope, die, where_offset);
+	    maybe_canonicalize_type(is_type(result), ctxt);
+	  }
 	else if (!type_suppressed)
 	  {
 	    enum_type_decl_sptr e = build_enum_type(ctxt, die, scope,
@@ -14887,13 +15004,16 @@
 	  type_is_suppressed(ctxt, scope, die, type_is_private);
 
 	if (type_suppressed && type_is_private)
-	  // The type is suppressed because it's private.  If other
-	  // non-suppressed and declaration-only instances of this
-	  // type exist in the current corpus, then it means those
-	  // non-suppressed instances are opaque versions of the
-	  // suppressed private type.  Lets return one of these opaque
-	  // types then.
-	  result = get_opaque_version_of_type(ctxt, scope, die, where_offset);
+	  {
+	    // The type is suppressed because it's private.  If other
+	    // non-suppressed and declaration-only instances of this
+	    // type exist in the current corpus, then it means those
+	    // non-suppressed instances are opaque versions of the
+	    // suppressed private type.  Lets return one of these opaque
+	    // types then.
+	    result = get_opaque_version_of_type(ctxt, scope, die, where_offset);
+	    maybe_canonicalize_type(is_type(result), ctxt);
+	  }
 	else if (!type_suppressed)
 	  {
 	    Dwarf_Die spec_die;
@@ -14970,6 +15090,7 @@
 	if (f)
 	  {
 	    result = f;
+	    result->set_is_artificial(false);
 	    maybe_canonicalize_type(die, ctxt);
 	  }
       }
@@ -15045,9 +15166,11 @@
 	    || (var_is_cloned = die_die_attribute(die, DW_AT_abstract_origin,
 						  spec_die, false)))
 	  {
-	    scope_decl_sptr spec_scope = get_scope_for_die(ctxt, &spec_die,
-							   called_from_public_decl,
-							   where_offset);
+	    scope_decl_sptr spec_scope =
+	      get_scope_for_die(ctxt, &spec_die,
+				/*called_from_public_decl=*/
+				die_is_effectively_public_decl(ctxt, die),
+				where_offset);
 	    if (spec_scope)
 	      {
 		decl_base_sptr d =
@@ -15144,7 +15267,7 @@
 						     called_from_public_decl,
 						     where_offset,
 						     is_declaration_only,
-						     /*is_required_decl_spec=*/false));
+						     /*is_required_decl_spec=*/true));
 		if (d)
 		  {
 		    fn = dynamic_pointer_cast<function_decl>(d);
@@ -15174,7 +15297,8 @@
 	if (result && !fn)
 	  {
 	    if (potential_member_fn_should_be_dropped(is_function_decl(result),
-						      die))
+						      die)
+		&& !is_required_decl_spec)
 	      {
 		result.reset();
 		break;
@@ -15356,8 +15480,18 @@
                                     true);
     }
 
+  // Normaly, a decl that is meant to be external has a DW_AT_external
+  // set.  But then some compilers fail to always emit that flag.  For
+  // instance, for static data members, some compilers won't emit the
+  // DW_AT_external.  In that case, we assume that if the variable is
+  // at global or named namespace scope, then we can assume it's
+  // external.  If the variable doesn't have any ELF symbol associated
+  // to it, it'll be dropped on the floor anyway.  Those variable
+  // decls are considered as being "effectively public".
+  bool consider_as_called_from_public_decl =
+    called_from_public_decl || die_is_effectively_public_decl(ctxt, die);
   scope_decl_sptr scope = get_scope_for_die(ctxt, die,
-					    called_from_public_decl,
+					    consider_as_called_from_public_decl,
 					    where_offset);
   return build_ir_node_from_die(ctxt, die, scope.get(),
 				called_from_public_decl,
@@ -15365,60 +15499,6 @@
                                 true);
 }
 
-status
-operator|(status l, status r)
-{
-  return static_cast<status>(static_cast<unsigned>(l)
-			     | static_cast<unsigned>(r));
-}
-
-status
-operator&(status l, status r)
-{
-  return static_cast<status>(static_cast<unsigned>(l)
-			     & static_cast<unsigned>(r));
-}
-
-status&
-operator|=(status& l, status r)
-{
-  l = l | r;
-  return l;
-}
-
-status&
-operator&=(status& l, status r)
-{
-  l = l & r;
-  return l;
-}
-
-/// Emit a diagnostic status with english sentences to describe the
-/// problems encoded in a given abigail::dwarf_reader::status, if
-/// there is an error.
-///
-/// @param status the status to diagnose
-///
-/// @return a string containing sentences that describe the possible
-/// errors encoded in @p s.  If there is no error to encode, then the
-/// empty string is returned.
-string
-status_to_diagnostic_string(status s)
-{
-  string str;
-
-  if (s & STATUS_DEBUG_INFO_NOT_FOUND)
-    str += "could not find debug info\n";
-
-  if (s & STATUS_ALT_DEBUG_INFO_NOT_FOUND)
-    str += "could not find alternate debug info\n";
-
-  if (s & STATUS_NO_SYMBOLS_FOUND)
-    str += "could not load ELF symbols\n";
-
-  return str;
-}
-
 /// Create a dwarf_reader::read_context.
 ///
 /// @param elf_path the path to the elf file the context is to be used for.
diff --git a/src/abg-elf-helpers.cc b/src/abg-elf-helpers.cc
index 480381d..ee63183 100644
--- a/src/abg-elf-helpers.cc
+++ b/src/abg-elf-helpers.cc
@@ -331,6 +331,51 @@
   return 0;
 }
 
+/// Find and return a section by its type.
+///
+/// @param elf_handle the elf handle to use.
+///
+/// @param section_type the type of the section.  This is the
+/// Elf32_Shdr::sh_type (or Elf64_Shdr::sh_type) data member.
+/// Examples of values of this parameter are SHT_PROGBITS or SHT_NOBITS.
+///
+/// @return the section found, or nil if none was found.
+Elf_Scn*
+find_section(Elf* elf_handle, Elf64_Word section_type)
+{
+  Elf_Scn* section = nullptr;
+  while ((section = elf_nextscn(elf_handle, section)) != 0)
+    {
+      GElf_Shdr header_mem, *header;
+      header = gelf_getshdr(section, &header_mem);
+      if (header->sh_type == section_type)
+	break;
+    }
+  return section;
+}
+
+/// Find and return the .symtab section
+///
+/// @param elf_handle the elf handle to use.
+///
+/// @return the section found, or nil if none was found
+Elf_Scn*
+find_symtab_section(Elf* elf_handle)
+{
+  return find_section(elf_handle, SHT_SYMTAB);
+}
+
+/// Find and return the .symtab section
+///
+/// @param elf_handle the elf handle to use.
+///
+/// @return the section found, or nil if none was found
+Elf_Scn*
+find_dynsym_section(Elf* elf_handle)
+{
+  return find_section(elf_handle, SHT_DYNSYM);
+}
+
 /// Find the symbol table.
 ///
 /// If we are looking at a relocatable or executable file, this
@@ -346,16 +391,8 @@
 Elf_Scn*
 find_symbol_table_section(Elf* elf_handle)
 {
-  Elf_Scn* section = 0, *dynsym = 0, *sym_tab = 0;
-  while ((section = elf_nextscn(elf_handle, section)) != 0)
-    {
-      GElf_Shdr header_mem, *header;
-      header = gelf_getshdr(section, &header_mem);
-      if (header->sh_type == SHT_DYNSYM)
-	dynsym = section;
-      else if (header->sh_type == SHT_SYMTAB)
-	sym_tab = section;
-    }
+  Elf_Scn *dynsym = find_dynsym_section(elf_handle),
+	  *sym_tab = find_symtab_section(elf_handle);
 
   if (dynsym || sym_tab)
     {
@@ -367,7 +404,7 @@
       else
 	return dynsym ? dynsym : sym_tab;
     }
-  return NULL;
+  return nullptr;
 }
 
 /// Find the index (in the section headers table) of the symbol table
@@ -612,6 +649,29 @@
   return NULL;
 }
 
+/// Return the string table used by the given symbol table.
+///
+/// @param elf_handle the elf handle to use.
+///
+/// @param symtab_section section containing a symbol table.
+///
+/// @return the string table linked by the symtab, if it is not NULL.
+Elf_Scn*
+find_strtab_for_symtab_section(Elf* elf_handle, Elf_Scn* symtab_section)
+{
+  Elf_Scn *strtab_section = NULL;
+
+  if (symtab_section)
+    {
+      GElf_Shdr symtab_shdr_mem, *symtab_shdr;
+
+      symtab_shdr = gelf_getshdr(symtab_section, &symtab_shdr_mem);
+      strtab_section = elf_getscn(elf_handle, symtab_shdr->sh_link);
+    }
+
+  return strtab_section;
+}
+
 /// Get the version definition (from the SHT_GNU_verdef section) of a
 /// given symbol represented by a pointer to GElf_Versym.
 ///
diff --git a/src/abg-elf-helpers.h b/src/abg-elf-helpers.h
index 96e03d2..718ce9c 100644
--- a/src/abg-elf-helpers.h
+++ b/src/abg-elf-helpers.h
@@ -50,6 +50,15 @@
 	     Elf64_Word		section_type);
 
 Elf_Scn*
+find_section(Elf* elf_handle, Elf64_Word section_type);
+
+Elf_Scn*
+find_symtab_section(Elf* elf_handle);
+
+Elf_Scn*
+find_dynsym_section(Elf* elf_handle);
+
+Elf_Scn*
 find_symbol_table_section(Elf* elf_handle);
 
 bool
@@ -103,6 +112,10 @@
 Elf_Scn*
 find_relocation_section(Elf* elf_handle, Elf_Scn* target_section);
 
+Elf_Scn*
+find_strtab_for_symtab_section(Elf*	elf_handle,
+                               Elf_Scn*	symtab_section);
+
 //
 // Helpers for symbol versioning
 //
diff --git a/src/abg-elf-reader-common.cc b/src/abg-elf-reader-common.cc
new file mode 100644
index 0000000..010c852
--- /dev/null
+++ b/src/abg-elf-reader-common.cc
@@ -0,0 +1,90 @@
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+// -*- Mode: C++ -*-
+//
+// Copyright (C) 2013-2021 Oracle, Inc.
+//
+// Author: Jose E. Marchesi
+
+/// @file
+///
+/// This file contains the implementation of facilities to deal with
+/// status codes related to ELF based readers.
+///
+/// More generally, this file contains definitions related to
+/// facilities shared by the various readers that handle the ELF
+/// format, e.g, the DWARF and CTF realder.
+#include "config.h"
+
+#include "abg-internal.h"
+
+// <headers defining libabigail's API go under here>
+ABG_BEGIN_EXPORT_DECLARATIONS
+
+#include "abg-elf-reader-common.h"
+
+ABG_END_EXPORT_DECLARATIONS
+// </headers defining libabigail's API>
+
+namespace abigail
+{
+
+namespace elf_reader
+{
+
+status
+operator|(status l, status r)
+{
+  return static_cast<status>(static_cast<unsigned>(l)
+			     | static_cast<unsigned>(r));
+}
+
+status
+operator&(status l, status r)
+{
+  return static_cast<status>(static_cast<unsigned>(l)
+			     & static_cast<unsigned>(r));
+}
+
+status&
+operator|=(status& l, status r)
+{
+  l = l | r;
+  return l;
+}
+
+status&
+operator&=(status& l, status r)
+{
+  l = l & r;
+  return l;
+}
+
+/// Return a diagnostic status with english sentences to describe the
+/// problems encoded in a given abigail::elf_reader::status, if
+/// there is an error.
+///
+/// @param status the status to diagnose
+///
+/// @return a string containing sentences that describe the possible
+/// errors encoded in @p s.  If there is no error to encode, then the
+/// empty string is returned.
+std::string
+status_to_diagnostic_string(status s)
+{
+  std::string str;
+
+  if (s & STATUS_DEBUG_INFO_NOT_FOUND)
+    str += "could not find debug info\n";
+
+  if (s & STATUS_ALT_DEBUG_INFO_NOT_FOUND)
+    str += "could not find alternate debug info\n";
+
+  if (s & STATUS_NO_SYMBOLS_FOUND)
+    str += "could not load ELF symbols\n";
+
+  return str;
+}
+
+}// end namespace elf_reader
+
+}// end namespace abigail
diff --git a/src/abg-ir-priv.h b/src/abg-ir-priv.h
index 9a2b387..b362a9b 100644
--- a/src/abg-ir-priv.h
+++ b/src/abg-ir-priv.h
@@ -16,6 +16,7 @@
 #include <string>
 
 #include "abg-ir.h"
+#include "abg-corpus.h"
 
 namespace abigail
 {
@@ -151,9 +152,768 @@
   {return types_;}
 }; // end translation_unit::priv
 
+// <type_base definitions>
+
+/// Definition of the private data of @ref type_base.
+struct type_base::priv
+{
+  size_t		size_in_bits;
+  size_t		alignment_in_bits;
+  type_base_wptr	canonical_type;
+  // The data member below holds the canonical type that is managed by
+  // the smart pointer referenced by the canonical_type data member
+  // above.  We are storing this underlying (naked) pointer here, so
+  // that users can access it *fast*.  Otherwise, accessing
+  // canonical_type above implies creating a shared_ptr, and that has
+  // been measured to be slow for some performance hot spots.
+  type_base*		naked_canonical_type;
+  // Computing the representation of a type again and again can be
+  // costly.  So we cache the internal and non-internal type
+  // representation strings here.
+  interned_string	internal_cached_repr_;
+  interned_string	cached_repr_;
+  // The next two data members are used while comparing types during
+  // canonicalization.  They are useful for the "canonical type
+  // propagation" (aka on-the-fly-canonicalization) optimization
+  // implementation.
+
+  // The set of canonical recursive types this type depends on.
+  unordered_set<uintptr_t> depends_on_recursive_type_;
+  bool canonical_type_propagated_;
+
+  priv()
+    : size_in_bits(),
+      alignment_in_bits(),
+      naked_canonical_type(),
+      canonical_type_propagated_(false)
+  {}
+
+  priv(size_t s,
+       size_t a,
+       type_base_sptr c = type_base_sptr())
+    : size_in_bits(s),
+      alignment_in_bits(a),
+      canonical_type(c),
+      naked_canonical_type(c.get()),
+      canonical_type_propagated_(false)
+  {}
+
+  /// Test if the current type depends on recursive type comparison.
+  ///
+  /// A recursive type T is a type T which has a sub-type that is T
+  /// (recursively) itself.
+  ///
+  /// So this function tests if the current type has a recursive
+  /// sub-type or is a recursive type itself.
+  ///
+  /// @return true if the current type depends on a recursive type.
+  bool
+  depends_on_recursive_type() const
+  {return !depends_on_recursive_type_.empty();}
+
+  /// Test if the current type depends on a given recursive type.
+  ///
+  /// A recursive type T is a type T which has a sub-type that is T
+  /// (recursively) itself.
+  ///
+  /// So this function tests if the current type depends on a given
+  /// recursive type.
+  ///
+  /// @param dependant the type we want to test if the current type
+  /// depends on.
+  ///
+  /// @return true if the current type depends on the recursive type
+  /// @dependant.
+  bool
+  depends_on_recursive_type(const type_base* dependant) const
+  {
+    return
+      (depends_on_recursive_type_.find(reinterpret_cast<uintptr_t>(dependant))
+       != depends_on_recursive_type_.end());
+  }
+
+  /// Set the flag that tells if the current type depends on a given
+  /// recursive type.
+  ///
+  /// A recursive type T is a type T which has asub-type that is T
+  /// (recursively) itself.
+  ///
+  /// So this function tests if the current type depends on a
+  /// recursive type.
+  ///
+  /// @param t the recursive type that current type depends on.
+  void
+  set_depends_on_recursive_type(const type_base * t)
+  {depends_on_recursive_type_.insert(reinterpret_cast<uintptr_t>(t));}
+
+  /// Unset the flag that tells if the current type depends on a given
+  /// recursive type.
+  ///
+  /// A recursive type T is a type T which has asub-type that is T
+  /// (recursively) itself.
+  ///
+  /// So this function flags the current type as not being dependant
+  /// on a given recursive type.
+  ///
+  ///
+  /// @param t the recursive type to consider.
+  void
+  set_does_not_depend_on_recursive_type(const type_base *t)
+  {depends_on_recursive_type_.erase(reinterpret_cast<uintptr_t>(t));}
+
+  /// Flag the current type as not being dependant on any recursive type.
+  void
+  set_does_not_depend_on_recursive_type()
+  {depends_on_recursive_type_.clear();}
+
+  /// Test if the type carries a canonical type that is the result of
+  /// maybe_propagate_canonical_type(), aka, "canonical type
+  /// propagation optimization".
+  ///
+  /// @return true iff the current type carries a canonical type that
+  /// is the result of canonical type propagation.
+  bool
+  canonical_type_propagated()
+  {return canonical_type_propagated_;}
+
+  /// Set the flag that says if the type carries a canonical type that
+  /// is the result of maybe_propagate_canonical_type(), aka,
+  /// "canonical type propagation optimization".
+  ///
+  /// @param f true iff the current type carries a canonical type that
+  /// is the result of canonical type propagation.
+  void
+  set_canonical_type_propagated(bool f)
+  {canonical_type_propagated_ = f;}
+
+  /// If the current canonical type was set as the result of the
+  /// "canonical type propagation optimization", then clear it.
+  void
+  clear_propagated_canonical_type()
+  {
+    if (canonical_type_propagated_)
+      {
+	canonical_type.reset();
+	naked_canonical_type = nullptr;
+	set_canonical_type_propagated(false);
+      }
+  }
+}; // end struct type_base::priv
+
+// <environment definitions>
+/// The private data of the @ref environment type.
+struct environment::priv
+{
+  config				config_;
+  canonical_types_map_type		canonical_types_;
+  mutable vector<type_base_sptr>	sorted_canonical_types_;
+  type_base_sptr			void_type_;
+  type_base_sptr			variadic_marker_type_;
+  unordered_set<const class_or_union*>	classes_being_compared_;
+  unordered_set<const function_type*>	fn_types_being_compared_;
+  vector<type_base_sptr>		extra_live_types_;
+  interned_string_pool			string_pool_;
+  // The two vectors below represent the stack of left and right
+  // operands of the current type comparison operation that is
+  // happening during type canonicalization.
+  //
+  // Basically, that stack of operand looks like below.
+  //
+  // First, suppose we have a type T_L that has two sub-types as this:
+  //
+  //  T_L
+  //   |
+  //   +-- L_OP0
+  //   |
+  //   +-- L_OP1
+  //
+  // Now suppose that we have another type T_R that has two sub-types
+  // as this:
+  //
+  //  T_R
+  //   |
+  //   +-- R_OP0
+  //   |
+  //   +-- R_OP1
+  //
+  //   Now suppose that we compare T_L against T_R.  We are going to
+  //   have a stack of pair of types. Each pair of types represents
+  //   two (sub) types being compared against each other.
+  //
+  //   On the stack, we will thus first have the pair (T_L, T_R)
+  //   being compared.  Then, we will have the pair (L_OP0, R_OP0)
+  //   being compared, and then the pair (L_OP1, R_OP1) being
+  //   compared.  Like this:
+  //
+  // | T_L | L_OP0 | L_OP1 | <-- this goes into left_type_comp_operands_;
+  //  -------- -------------
+  // | T_R | R_OP0 | R_OP1 | <-- this goes into right_type_comp_operands_;
+  //
+  // This "stack of operands of the current type comparison, during
+  // type canonicalization" is used in the context of the @ref
+  // OnTheFlyCanonicalization optimization.  It's used to detect if a
+  // sub-type of the type being canonicalized depends on a recursive
+  // type.
+  vector<const type_base*>		left_type_comp_operands_;
+  vector<const type_base*>		right_type_comp_operands_;
+  // Vector of types that protentially received propagated canonical types.
+  // If the canonical type propagation is confirmed, the potential
+  // canonical types must be promoted as canonical types. Otherwise if
+  // the canonical type propagation is cancelled, the canonical types
+  // must be cleared.
+  pointer_set		types_with_non_confirmed_propagated_ct_;
+#ifdef WITH_DEBUG_SELF_COMPARISON
+  // This is used for debugging purposes.
+  // When abidw is used with the option --debug-abidiff, some
+  // libabigail internals need to get a hold on the initial binary
+  // input of abidw, as well as as the abixml file that represents the
+  // ABI of that binary.
+  //
+  // So this one is the corpus for the input binary.
+  corpus_wptr				first_self_comparison_corpus_;
+  // This one is the corpus for the ABIXML file representing the
+  // serialization of the input binary.
+  corpus_wptr				second_self_comparison_corpus_;
+  // This is also used for debugging purposes, when using
+  //   'abidw --debug-abidiff <binary>'.  It holds the set of mapping of
+  // an abixml (canonical) type and its type-id.
+  unordered_map<string, uintptr_t>	type_id_canonical_type_map_;
+  // Likewise.  It holds a map that associates the pointer to a type
+  // read from abixml and the type-id string it corresponds to.
+  unordered_map<uintptr_t, string>	pointer_type_id_map_;
+#endif
+  bool					canonicalization_is_done_;
+  bool					do_on_the_fly_canonicalization_;
+  bool					decl_only_class_equals_definition_;
+  bool					use_enum_binary_only_equality_;
+#ifdef WITH_DEBUG_SELF_COMPARISON
+  bool					self_comparison_debug_on_;
+#endif
+#ifdef WITH_DEBUG_TYPE_CANONICALIZATION
+  // This controls whether to use canonical type comparison during
+  // type comparison or not.  This is only used for debugging, when we
+  // want to ensure that comparing types using canonical or structural
+  // comparison yields the same result.
+  bool					use_canonical_type_comparison_;
+  // Whether we are debugging type canonicalization or not.  When
+  // debugging type canonicalization, a type is compared to its
+  // potential canonical type twice: The first time with canonical
+  // comparison activated, and the second time with structural
+  // comparison activated.  The two comparison should yield the same
+  // result, otherwise, canonicalization is "broken" for that
+  // particular type.
+  bool					debug_type_canonicalization_;
+#endif
+
+  priv()
+    : canonicalization_is_done_(),
+      do_on_the_fly_canonicalization_(true),
+      decl_only_class_equals_definition_(false),
+      use_enum_binary_only_equality_(false)
+#ifdef WITH_DEBUG_SELF_COMPARISON
+    ,
+      self_comparison_debug_on_(false)
+#endif
+#ifdef WITH_DEBUG_TYPE_CANONICALIZATION
+    ,
+      use_canonical_type_comparison_(true),
+      debug_type_canonicalization_(false)
+#endif
+  {}
+
+  /// Push a pair of operands on the stack of operands of the current
+  /// type comparison, during type canonicalization.
+  ///
+  /// For more information on this, please look at the description of
+  /// the right_type_comp_operands_ data member.
+  ///
+  /// @param left the left-hand-side comparison operand to push.
+  ///
+  /// @param right the right-hand-side comparison operand to push.
+  void
+  push_composite_type_comparison_operands(const type_base* left,
+					  const type_base* right)
+  {
+    ABG_ASSERT(left && right);
+
+    left_type_comp_operands_.push_back(left);
+    right_type_comp_operands_.push_back(right);
+  }
+
+  /// Pop a pair of operands from the stack of operands to the current
+  /// type comparison.
+  ///
+  /// For more information on this, please look at the description of
+  /// the right_type_comp_operands_ data member.
+  ///
+  /// @param left the left-hand-side comparison operand we expect to
+  /// pop from the top of the stack.  If this doesn't match the
+  /// operand found on the top of the stack, the function aborts.
+  ///
+  /// @param right the right-hand-side comparison operand we expect to
+  /// pop from the bottom of the stack. If this doesn't match the
+  /// operand found on the top of the stack, the function aborts.
+  void
+  pop_composite_type_comparison_operands(const type_base* left,
+					 const type_base* right)
+  {
+    const type_base *t = left_type_comp_operands_.back();
+    ABG_ASSERT(t == left);
+    t = right_type_comp_operands_.back();
+    ABG_ASSERT(t == right);
+
+    left_type_comp_operands_.pop_back();
+    right_type_comp_operands_.pop_back();
+  }
+
+  /// Mark all the types that comes after a certain one as NOT being
+  /// eligible for the canonical type propagation optimization.
+  ///
+  /// @param type the type that represents the "marker type".  All
+  /// types after this one will be marked as being NON-eligible to
+  /// the canonical type propagation optimization.
+  ///
+  /// @param types the set of types to consider.  In that vector, all
+  /// types that come after @p type are going to be marked as being
+  /// non-eligible to the canonical type propagation optimization.
+  ///
+  /// @return true iff the operation was successful.
+  bool
+  mark_dependant_types(const type_base* type,
+		       vector<const type_base*>& types)
+  {
+    bool found = false;
+    for (auto t : types)
+      {
+	if (!found
+	    && (reinterpret_cast<uintptr_t>(t)
+		== reinterpret_cast<uintptr_t>(type)))
+	  {
+	    found = true;
+	    continue;
+	  }
+	else if (found)
+	  t->priv_->set_depends_on_recursive_type(type);
+      }
+    return found;
+  }
+
+  /// In the stack of the current types being compared (as part of
+  /// type canonicalization), mark all the types that comes after a
+  /// certain one as NOT being eligible to the canonical type
+  /// propagation optimization.
+  ///
+  /// For a starter, please read about the @ref
+  /// OnTheFlyCanonicalization, aka, "canonical type propagation
+  /// optimization".
+  ///
+  /// To implement that optimization, we need, among other things to
+  /// maintain stack of the types (and their sub-types) being
+  /// currently compared as part of type canonicalization.
+  ///
+  /// Note that we only consider the type that is the right-hand-side
+  /// operand of the comparison because it's that one that is being
+  /// canonicalized and thus, that is not yet canonicalized.
+  ///
+  /// The reason why a type is deemed NON-eligible to the canonical
+  /// type propagation optimization is that it "depends" on
+  /// recursively present type.  Let me explain.
+  ///
+  /// Suppose we have a type T that has sub-types named ST0 and ST1.
+  /// Suppose ST1 itself has a sub-type that is T itself.  In this
+  /// case, we say that T is a recursive type, because it has T
+  /// (itself) as one of its sub-types:
+  ///
+  ///   T
+  ///   +-- ST0
+  ///   |
+  ///   +-- ST1
+  ///        +
+  ///        |
+  ///        +-- T
+  ///
+  /// ST1 is said to "depend" on T because it has T as a sub-type.
+  /// But because T is recursive, then ST1 is said to depend on a
+  /// recursive type.  Notice however that ST0 does not depend on any
+  /// recursive type.
+  ///
+  /// When we are at the point of comparing the sub-type T of ST1
+  /// against its counterpart, the stack of the right-hand-side
+  /// operands of the type canonicalization is going to look like
+  /// this:
+  ///
+  ///    | T | ST1 |
+  ///
+  /// We don't add the type T to the stack as we detect that T was
+  /// already in there (recursive cycle).
+  ///
+  /// So, this function will basically mark ST1 as being NON-eligible
+  /// to being the target of canonical type propagation.
+  ///
+  /// @param right the right-hand-side operand of the type comparison.
+  ///
+  /// @return true iff the operation was successful.
+  bool
+  mark_dependant_types_compared_until(const type_base* right)
+  {
+    bool result = false;
+
+    result |=
+      mark_dependant_types(right,
+			   right_type_comp_operands_);
+    return result;
+  }
+
+  /// Propagate the canonical type of a type to another one.
+  ///
+  /// @param src the type to propagate the canonical type from.
+  ///
+  /// @param dest the type to propagate the canonical type of @p src
+  /// to.
+  ///
+  /// @return bool iff the canonical was propagated.
+  bool
+  propagate_ct(const type_base& src, const type_base& dest)
+  {
+    type_base_sptr canonical = src.get_canonical_type();
+    ABG_ASSERT(canonical);
+    dest.priv_->canonical_type = canonical;
+    dest.priv_->naked_canonical_type = canonical.get();
+    dest.priv_->set_canonical_type_propagated(true);
+    return true;
+  }
+
+  /// Mark a set of types that have been the target of canonical type
+  /// propagation and that depend on a recursive type as being
+  /// permanently canonicalized.
+  ///
+  /// To understand the sentence above, please read the description of
+  /// type canonicalization and especially about the "canonical type
+  /// propagation optimization" at @ref OnTheFlyCanonicalization, in
+  /// the src/abg-ir.cc file.
+  void
+  confirm_ct_propagation(const type_base* dependant_type)
+  {
+    pointer_set to_remove;
+    for (auto i : types_with_non_confirmed_propagated_ct_)
+      {
+	type_base *t = reinterpret_cast<type_base*>(i);
+	ABG_ASSERT(t->priv_->depends_on_recursive_type());
+	t->priv_->set_does_not_depend_on_recursive_type(dependant_type);
+	if (!t->priv_->depends_on_recursive_type())
+	  to_remove.insert(i);
+      }
+
+    for (auto i : to_remove)
+      types_with_non_confirmed_propagated_ct_.erase(i);
+  }
+
+  /// Collect the types that depends on a given "target" type.
+  ///
+  /// Walk a set of types and if they depend directly or indirectly on
+  /// a "target" type, then collect them into a set.
+  ///
+  /// @param target the target type to consider.
+  ///
+  /// @param types the types to walk to detect those who depend on @p
+  /// target.
+  ///
+  /// @return true iff one or more type from @p types is found to
+  /// depend on @p target.
+  bool
+  collect_types_that_depends_on(const type_base *target,
+				const pointer_set& types,
+				pointer_set& collected)
+  {
+    bool result = false;
+    for (const auto i : types)
+      {
+	// First avoid infinite loop if we've already collected the
+	// current type.
+	if (collected.find(i) != collected.end())
+	  continue;
+
+	type_base *t = reinterpret_cast<type_base*>(i);
+	if (t->priv_->depends_on_recursive_type(target))
+	  {
+	    collected.insert(i);
+	    collect_types_that_depends_on(t, types, collected);
+	    result = true;
+	  }
+      }
+    return result;
+  }
+
+  /// Reset the canonical type (set it nullptr) of a set of types that
+  /// have been the target of canonical type propagation and that
+  /// depend on a given recursive type.
+  ///
+  /// Once the canonical type of a type in that set is reset, the type
+  /// is marked as non being dependant on a recursive type anymore.
+  ///
+  /// To understand the sentences above, please read the description
+  /// of type canonicalization and especially about the "canonical
+  /// type propagation optimization" at @ref OnTheFlyCanonicalization,
+  /// in the src/abg-ir.cc file.
+  ///
+  /// @param target if a type which has been subject to the canonical
+  /// type propagation optimizationdepends on a this target type, then
+  /// cancel its canonical type.
+  void
+  cancel_ct_propagation(const type_base* target)
+  {
+    pointer_set to_remove;
+    collect_types_that_depends_on(target,
+				  types_with_non_confirmed_propagated_ct_,
+				  to_remove);
+
+    for (auto i : to_remove)
+      {
+	type_base *t = reinterpret_cast<type_base*>(i);
+	ABG_ASSERT(t->priv_->depends_on_recursive_type());
+	type_base_sptr canonical = t->priv_->canonical_type.lock();
+	if (canonical)
+	  {
+	    t->priv_->clear_propagated_canonical_type();
+	    t->priv_->set_does_not_depend_on_recursive_type();
+	  }
+      }
+
+    for (auto i : to_remove)
+      types_with_non_confirmed_propagated_ct_.erase(i);
+  }
+
+  /// Remove a given type from the set of types that have been
+  /// non-confirmed subjects of the canonical type propagation
+  /// optimization.
+  ///
+  /// @param dependant the dependant type to consider.
+  void
+  remove_from_types_with_non_confirmed_propagated_ct(const type_base* dependant)
+  {
+    uintptr_t i = reinterpret_cast<uintptr_t>(dependant);
+    types_with_non_confirmed_propagated_ct_.erase(i);
+  }
+
+#ifdef WITH_DEBUG_SELF_COMPARISON
+  /// When debugging self comparison, verify that a type T
+  /// de-serialized from abixml has the same canonical type as the
+  /// initial type built from DWARF that was serialized into T in the
+  /// first place.
+  ///
+  /// @param t deserialized type (from abixml) to consider.
+  ///
+  /// @param c the canonical type @p t should have.
+  ///
+  /// @return true iff @p c is the canonical type that @p t should
+  /// have.
+  bool
+  check_canonical_type_from_abixml_during_self_comp(const type_base* t,
+						    const type_base* c)
+  {
+    if (!t || !t->get_corpus() || !c)
+      return false;
+
+    if (!(t->get_corpus()->get_origin() == ir::corpus::NATIVE_XML_ORIGIN))
+      return false;
+
+    // Get the abixml type-id that this type was constructed from.
+    string type_id;
+    {
+      unordered_map<uintptr_t, string>::const_iterator it =
+	pointer_type_id_map_.find(reinterpret_cast<uintptr_t>(t));
+      if (it == pointer_type_id_map_.end())
+	return false;
+      type_id = it->second;
+    }
+
+    // Get the canonical type the original in-memory type (constructed
+    // from DWARF) had when it was serialized into abixml in the first place.
+    type_base *original_canonical_type = nullptr;
+    if (!type_id.empty())
+      {
+	unordered_map<string, uintptr_t>::const_iterator it =
+	  type_id_canonical_type_map_.find(type_id);
+	if (it == type_id_canonical_type_map_.end())
+	  return false;
+	original_canonical_type = reinterpret_cast<type_base*>(it->second);
+      }
+
+    // Now perform the real check.
+    //
+    // We want to ensure that the canonical type 'c' of 't' is the
+    // same as the canonical type of initial in-memory type (built
+    // from DWARF) that was serialized into 't' (in abixml) in the
+    // first place.
+    if (original_canonical_type == c)
+      return true;
+
+    return false;
+  }
+
+  /// When debugging self comparison, verify that a type T
+  /// de-serialized from abixml has the same canonical type as the
+  /// initial type built from DWARF that was serialized into T in the
+  /// first place.
+  ///
+  /// @param t deserialized type (from abixml) to consider.
+  ///
+  /// @param c the canonical type @p t should have.
+  ///
+  /// @return true iff @p c is the canonical type that @p t should
+  /// have.
+  bool
+  check_canonical_type_from_abixml_during_self_comp(const type_base_sptr& t,
+						    const type_base_sptr& c)
+  {
+    return check_canonical_type_from_abixml_during_self_comp(t.get(), c.get());
+  }
+#endif
+};// end struct environment::priv
+
+// <class_or_union::priv definitions>
+struct class_or_union::priv
+{
+  typedef_decl_wptr		naming_typedef_;
+  member_types			member_types_;
+  data_members			data_members_;
+  data_members			non_static_data_members_;
+  member_functions		member_functions_;
+  // A map that associates a linkage name to a member function.
+  string_mem_fn_sptr_map_type	mem_fns_map_;
+  // A map that associates function signature strings to member
+  // function.
+  string_mem_fn_ptr_map_type	signature_2_mem_fn_map_;
+  member_function_templates	member_function_templates_;
+  member_class_templates	member_class_templates_;
+
+  priv()
+  {}
+
+  priv(class_or_union::member_types& mbr_types,
+       class_or_union::data_members& data_mbrs,
+       class_or_union::member_functions& mbr_fns)
+    : member_types_(mbr_types),
+      data_members_(data_mbrs),
+      member_functions_(mbr_fns)
+  {
+    for (data_members::const_iterator i = data_members_.begin();
+	 i != data_members_.end();
+	 ++i)
+      if (!get_member_is_static(*i))
+	non_static_data_members_.push_back(*i);
+  }
+
+  /// Mark a class or union or union as being currently compared using
+  /// the class_or_union== operator.
+  ///
+  /// Note that is marking business is to avoid infinite loop when
+  /// comparing a class or union or union. If via the comparison of a
+  /// data member or a member function a recursive re-comparison of
+  /// the class or union is attempted, the marking business help to
+  /// detect that infinite loop possibility and avoid it.
+  ///
+  /// @param klass the class or union or union to mark as being
+  /// currently compared.
+  void
+  mark_as_being_compared(const class_or_union& klass) const
+  {
+    const environment* env = klass.get_environment();
+    ABG_ASSERT(env);
+    env->priv_->classes_being_compared_.insert(&klass);
+  }
+
+  /// Mark a class or union as being currently compared using the
+  /// class_or_union== operator.
+  ///
+  /// Note that is marking business is to avoid infinite loop when
+  /// comparing a class or union. If via the comparison of a data
+  /// member or a member function a recursive re-comparison of the
+  /// class or union is attempted, the marking business help to detect
+  /// that infinite loop possibility and avoid it.
+  ///
+  /// @param klass the class or union to mark as being currently
+  /// compared.
+  void
+  mark_as_being_compared(const class_or_union* klass) const
+  {mark_as_being_compared(*klass);}
+
+  /// Mark a class or union as being currently compared using the
+  /// class_or_union== operator.
+  ///
+  /// Note that is marking business is to avoid infinite loop when
+  /// comparing a class or union. If via the comparison of a data
+  /// member or a member function a recursive re-comparison of the
+  /// class or union is attempted, the marking business help to detect
+  /// that infinite loop possibility and avoid it.
+  ///
+  /// @param klass the class or union to mark as being currently
+  /// compared.
+  void
+  mark_as_being_compared(const class_or_union_sptr& klass) const
+  {mark_as_being_compared(*klass);}
+
+  /// If the instance of class_or_union has been previously marked as
+  /// being compared -- via an invocation of mark_as_being_compared()
+  /// this method unmarks it.  Otherwise is has no effect.
+  ///
+  /// This method is not thread safe because it uses the static data
+  /// member classes_being_compared_.  If you wish to use it in a
+  /// multi-threaded environment you should probably protect the
+  /// access to that static data member with a mutex or somesuch.
+  ///
+  /// @param klass the instance of class_or_union to unmark.
+  void
+  unmark_as_being_compared(const class_or_union& klass) const
+  {
+    const environment* env = klass.get_environment();
+    ABG_ASSERT(env);
+    env->priv_->classes_being_compared_.erase(&klass);
+  }
+
+  /// If the instance of class_or_union has been previously marked as
+  /// being compared -- via an invocation of mark_as_being_compared()
+  /// this method unmarks it.  Otherwise is has no effect.
+  ///
+  /// @param klass the instance of class_or_union to unmark.
+  void
+  unmark_as_being_compared(const class_or_union* klass) const
+  {
+    if (klass)
+      return unmark_as_being_compared(*klass);
+  }
+
+  /// Test if a given instance of class_or_union is being currently
+  /// compared.
+  ///
+  ///@param klass the class or union to test.
+  ///
+  /// @return true if @p klass is being compared, false otherwise.
+  bool
+  comparison_started(const class_or_union& klass) const
+  {
+    const environment* env = klass.get_environment();
+    ABG_ASSERT(env);
+    return env->priv_->classes_being_compared_.count(&klass);
+  }
+
+  /// Test if a given instance of class_or_union is being currently
+  /// compared.
+  ///
+  ///@param klass the class or union to test.
+  ///
+  /// @return true if @p klass is being compared, false otherwise.
+  bool
+  comparison_started(const class_or_union* klass) const
+  {
+    if (klass)
+      return comparison_started(*klass);
+    return false;
+  }
+}; // end struct class_or_union::priv
+
 } // end namespace ir
 
 } // end namespace abigail
 
 #endif // __ABG_IR_PRIV_H__
-
diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index 2ad7910..23ee021 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -18,6 +18,7 @@
 #include <sstream>
 #include <typeinfo>
 #include <unordered_map>
+#include <tuple>
 #include <utility>
 #include <vector>
 
@@ -33,6 +34,7 @@
 ABG_END_EXPORT_DECLARATIONS
 // </headers defining libabigail's API>
 
+#include "abg-cxx-compat.h"  // for abg_compat::optional
 #include "abg-tools-utils.h"
 #include "abg-comp-filter.h"
 #include "abg-ir-priv.h"
@@ -264,6 +266,124 @@
 static interned_string
 get_generic_anonymous_internal_type_name(const decl_base *d);
 
+static void
+update_qualified_name(decl_base * d);
+
+static void
+update_qualified_name(decl_base_sptr d);
+
+void
+push_composite_type_comparison_operands(const type_base& left,
+					const type_base& right);
+
+void
+pop_composite_type_comparison_operands(const type_base& left,
+				       const type_base& right);
+
+bool
+mark_dependant_types_compared_until(const type_base &r);
+
+/// Push a pair of operands on the stack of operands of the current
+/// type comparison, during type canonicalization.
+///
+/// For more information on this, please look at the description of
+/// the environment::priv::right_type_comp_operands_ data member.
+///
+/// @param left the left-hand-side comparison operand to push.
+///
+/// @param right the right-hand-side comparison operand to push.
+void
+push_composite_type_comparison_operands(const type_base& left,
+					const type_base& right)
+{
+  const environment * env = left.get_environment();
+  env->priv_->push_composite_type_comparison_operands(&left, &right);
+}
+
+/// Pop a pair of operands from the stack of operands to the current
+/// type comparison.
+///
+/// For more information on this, please look at the description of
+/// the environment::privright_type_comp_operands_ data member.
+///
+/// @param left the left-hand-side comparison operand we expect to
+/// pop from the top of the stack.  If this doesn't match the
+/// operand found on the top of the stack, the function aborts.
+///
+/// @param right the right-hand-side comparison operand we expect to
+/// pop from the bottom of the stack. If this doesn't match the
+/// operand found on the top of the stack, the function aborts.
+void
+pop_composite_type_comparison_operands(const type_base& left,
+				       const type_base& right)
+{
+  const environment * env = left.get_environment();
+  env->priv_->pop_composite_type_comparison_operands(&left, &right);
+}
+
+/// In the stack of the current types being compared (as part of type
+/// canonicalization), mark all the types that comes after a certain
+/// one as NOT being eligible to the canonical type propagation
+/// optimization.
+///
+/// For a starter, please read about the @ref
+/// OnTheFlyCanonicalization, aka, "canonical type propagation
+/// optimization".
+///
+/// To implement that optimization, we need, among other things to
+/// maintain stack of the types (and their sub-types) being
+/// currently compared as part of type canonicalization.
+///
+/// Note that we only consider the type that is the right-hand-side
+/// operand of the comparison because it's that one that is being
+/// canonicalized and thus, that is not yet canonicalized.
+///
+/// The reason why a type is deemed NON-eligible to the canonical
+/// type propagation optimization is that it "depends" on
+/// recursively present type.  Let me explain.
+///
+/// Suppose we have a type T that has sub-types named ST0 and ST1.
+/// Suppose ST1 itself has a sub-type that is T itself.  In this
+/// case, we say that T is a recursive type, because it has T
+/// (itself) as one of its sub-types:
+///
+///   T
+///   +-- ST0
+///   |
+///   +-- ST1
+///        +
+///        |
+///        +-- T
+///
+/// ST1 is said to "depend" on T because it has T as a sub-type.
+/// But because T is recursive, then ST1 is said to depend on a
+/// recursive type.  Notice however that ST0 does not depend on any
+/// recursive type.
+///
+/// When we are at the point of comparing the sub-type T of ST1
+/// against its counterpart, the stack of the right-hand-side
+/// operands of the type canonicalization is going to look like
+/// this:
+///
+///    | T | ST1 |
+///
+/// We don't add the type T to the stack as we detect that T was
+/// already in there (recursive cycle).
+///
+/// So, this function will basically mark ST1 as being NON-eligible
+/// to being the target of canonical type propagation, by marking ST1
+/// as being dependant on T.
+///
+/// @param right the right-hand-side operand of the type comparison.
+///
+/// @return true iff the operation was successful.
+bool
+mark_dependant_types_compared_until(const type_base &r)
+{
+  const environment * env = r.get_environment();
+  return env->priv_->mark_dependant_types_compared_until(&r);
+}
+
 /// @brief the location of a token represented in its simplest form.
 /// Instances of this type are to be stored in a sorted vector, so the
 /// type must have proper relational operators.
@@ -321,7 +441,16 @@
 void
 location::expand(std::string& path, unsigned& line, unsigned& column) const
 {
-  ABG_ASSERT(get_location_manager());
+  if (!get_location_manager())
+    {
+      // We don't have a location manager maybe because this location
+      // was just freshly instanciated.  We still want to be able to
+      // expand to default values.
+      path = "";
+      line = 0;
+      column = 0;
+      return;
+    }
   get_location_manager()->expand_location(*this, path, line, column);
 }
 
@@ -351,7 +480,10 @@
 };
 
 location_manager::location_manager()
-{priv_ = shared_ptr<location_manager::priv>(new location_manager::priv);}
+  : priv_(new location_manager::priv)
+{}
+
+location_manager::~location_manager() = default;
 
 /// Insert the triplet representing a source locus into our internal
 /// vector of location triplet.  Return an instance of location type,
@@ -425,6 +557,8 @@
   : priv_(new priv)
 {}
 
+type_maps::~type_maps() = default;
+
 /// Test if the type_maps is empty.
 ///
 /// @return true iff the type_maps is empty.
@@ -649,6 +783,76 @@
   {return operator()(type_base_sptr(l), type_base_sptr(r));}
 }; // end struct type_name_comp
 
+#ifdef WITH_DEBUG_SELF_COMPARISON
+
+/// This is a function called when the ABG_RETURN* macros defined
+/// below return false.
+///
+/// The purpose of this function is to ease debugging.  To know where
+/// the equality functions first compare non-equal, we can just set a
+/// breakpoint on this notify_equality_failed function and run the
+/// equality functions.  Because all the equality functions use the
+/// ABG_RETURN* macros to return their values, this function is always
+/// called when any of those equality function return false.
+///
+/// @param l the first operand of the equality.
+///
+/// @param r the second operand of the equality.
+static void
+notify_equality_failed(const type_or_decl_base &l __attribute__((unused)),
+		       const type_or_decl_base &r __attribute__((unused)))
+{}
+
+/// This is a function called when the ABG_RETURN* macros defined
+/// below return false.
+///
+/// The purpose of this function is to ease debugging.  To know where
+/// the equality functions first compare non-equal, we can just set a
+/// breakpoint on this notify_equality_failed function and run the
+/// equality functions.  Because all the equality functions use the
+/// ABG_RETURN* macros to return their values, this function is always
+/// called when any of those equality function return false.
+///
+/// @param l the first operand of the equality.
+///
+/// @param r the second operand of the equality.
+static void
+notify_equality_failed(const type_or_decl_base *l __attribute__((unused)),
+		       const type_or_decl_base *r __attribute__((unused)))
+{}
+
+#define ABG_RETURN_EQUAL(l, r)			\
+  do						\
+    {						\
+      if (l != r)				\
+        notify_equality_failed(l, r);		\
+      return (l == r);				\
+    }						\
+  while(false)
+
+
+#define ABG_RETURN_FALSE	    \
+  do				    \
+    {				    \
+      notify_equality_failed(l, r); \
+      return false;		    \
+    } while(false)
+
+#define ABG_RETURN(value)			\
+  do						\
+    {						\
+      if (value == false)			\
+	notify_equality_failed(l, r);		\
+      return value;				\
+    } while (false)
+
+#else // WITH_DEBUG_SELF_COMPARISON
+
+#define ABG_RETURN_FALSE return false
+#define ABG_RETURN(value) return (value)
+#define ABG_RETURN_EQUAL(l, r) return ((l) == (r));
+#endif
+
 /// Compare two types by comparing their canonical types if present.
 ///
 /// If the canonical types are not present (because the types have not
@@ -662,10 +866,218 @@
 bool
 try_canonical_compare(const T *l, const T *r)
 {
+#if WITH_DEBUG_TYPE_CANONICALIZATION
+  // We are debugging the canonicalization of a type down the stack.
+  // 'l' is a subtype of a canonical type and 'r' is a subtype of the
+  // type being canonicalized.  We are at a point where we can compare
+  // 'l' and 'r' either using canonical comparison (if 'l' and 'r'
+  // have canonical types) or structural comparison.
+  //
+  // Because we are debugging the process of type canonicalization, we
+  // want to compare 'l' and 'r' canonically *AND* structurally.  Both
+  // kinds of comparison should yield the same result, otherwise type
+  // canonicalization just failed for the subtype 'r' of the type
+  // being canonicalized.
+  //
+  // In concrete terms, this function is going to be called twice with
+  // the same pair {'l', 'r'} to compare: The first time with
+  // environment::priv_->use_canonical_type_comparison_ set to true,
+  // instructing us to compare them canonically, and the second time
+  // with that boolean set to false, instructing us to compare them
+  // structurally.
+  const environment *env = l->get_environment();
+  if (env->priv_->use_canonical_type_comparison_)
+    {
+      if (const type_base *lc = l->get_naked_canonical_type())
+	if (const type_base *rc = r->get_naked_canonical_type())
+	  ABG_RETURN_EQUAL(lc, rc);
+    }
+  return equals(*l, *r, 0);
+#else
   if (const type_base *lc = l->get_naked_canonical_type())
     if (const type_base *rc = r->get_naked_canonical_type())
-      return lc == rc;
+      ABG_RETURN_EQUAL(lc, rc);
   return equals(*l, *r, 0);
+#endif
+
+
+}
+
+/// Detect if a recursive comparison cycle is detected while
+/// structurally comparing two types (a.k.a member-wise comparison).
+///
+/// @param l the left-hand-side operand of the current comparison.
+///
+/// @param r the right-hand-side operand of the current comparison.
+///
+/// @return true iff a comparison cycle is detected.
+template<typename T>
+bool
+is_comparison_cycle_detected(T& l, T& r)
+{
+  bool result = (l.priv_->comparison_started(l)
+		 || l.priv_->comparison_started(r));
+  return result ;
+}
+
+/// This macro is to be used while comparing composite types that
+/// might recursively refer to themselves.  Comparing two such types
+/// might get us into a cyle.
+///
+/// Practically, if we detect that we are already into comparing 'l'
+/// and 'r'; then, this is a cycle.
+//
+/// To break the cycle, we assume the result of the comparison is true
+/// for now.  Comparing the other sub-types of l & r will tell us later
+/// if l & r are actually different or not.
+///
+/// In the mean time, returning true from this macro should not be
+/// used to propagate the canonical type of 'l' onto 'r' as we don't
+/// know yet if l equals r.  All the types that depend on l and r
+/// can't (and that are in the comparison stack currently) can't have
+/// their canonical type propagated either.  So this macro disallows
+/// canonical type propagation for those types that depend on a
+/// recursively defined sub-type for now.
+///
+/// @param l the left-hand-side operand of the comparison.
+#define RETURN_TRUE_IF_COMPARISON_CYCLE_DETECTED(l, r)			\
+  do									\
+    {									\
+      if (is_comparison_cycle_detected(l, r))				\
+	{								\
+	  mark_dependant_types_compared_until(r);			\
+	  return true;							\
+	}								\
+    }									\
+  while(false)
+
+
+/// Mark a pair of types as being compared.
+///
+/// This is helpful to later detect recursive cycles in the comparison
+/// stack.
+///
+/// @param l the left-hand-side operand of the comparison.
+///
+/// @parm r the right-hand-side operand of the comparison.
+template<typename T>
+void
+mark_types_as_being_compared(T& l, T&r)
+{
+  l.priv_->mark_as_being_compared(l);
+  l.priv_->mark_as_being_compared(r);
+  push_composite_type_comparison_operands(l, r);
+}
+
+/// Mark a pair of types as being not compared anymore.
+///
+/// This is helpful to later detect recursive cycles in the comparison
+/// stack.
+///
+/// Note that the types must have been passed to
+/// mark_types_as_being_compared prior to calling this function.
+///
+/// @param l the left-hand-side operand of the comparison.
+///
+/// @parm r the right-hand-side operand of the comparison.
+template<typename T>
+void
+unmark_types_as_being_compared(T& l, T&r)
+{
+  l.priv_->unmark_as_being_compared(l);
+  l.priv_->unmark_as_being_compared(r);
+  pop_composite_type_comparison_operands(l, r);
+}
+
+/// Return the result of the comparison of two (sub) types.
+///
+/// The function does the necessary book keeping before returning the
+/// result of the comparison of two (sub) types.
+///
+/// The book-keeping done is in the following
+/// areas:
+///
+///   * Management of the Canonical Type Propagation optimization
+///   * type comparison cycle detection
+///
+///   @param l the left-hand-side operand of the type comparison
+///
+///   @param r the right-hand-side operand of the type comparison
+///
+///   @param propagate_canonical_type if true, it means the function
+///   performs the @ref OnTheFlyCanonicalization, aka, "canonical type
+///   propagation optimization".
+///
+///   @param value the result of the comparison of @p l and @p r.
+///
+///   @return the value @p value.
+template<typename T>
+bool
+return_comparison_result(T& l, T& r, bool value,
+			 bool propagate_canonical_type = true)
+{
+  if (propagate_canonical_type && (value == true))
+    maybe_propagate_canonical_type(l, r);
+
+  unmark_types_as_being_compared(l, r);
+
+  const environment* env = l.get_environment();
+  if (propagate_canonical_type && env->do_on_the_fly_canonicalization())
+    // We are instructed to perform the "canonical type propagation"
+    // optimization, making 'r' to possibly get the canonical type of
+    // 'l' if it has one.  This mostly means that we are currently
+    // canonicalizing the type that contain the subtype provided in
+    // the 'r' argument.
+    {
+      if (value == true
+	  && is_type(&r)->priv_->depends_on_recursive_type()
+	  && !env->priv_->right_type_comp_operands_.empty()
+	  && is_type(&r)->priv_->canonical_type_propagated())
+	{
+	  // Track the object 'r' for which the propagated canonical
+	  // type might be re-initialized if the current comparison
+	  // eventually fails.
+	  env->priv_->types_with_non_confirmed_propagated_ct_.insert
+	    (reinterpret_cast<uintptr_t>(is_type(&r)));
+	}
+      else if (value == true && env->priv_->right_type_comp_operands_.empty())
+	{
+	  // The type provided in the 'r' argument is the type that is
+	  // being canonicalized; 'r' is not a mere subtype being
+	  // compared, it's the whole type being canonicalized.  And
+	  // its canonicalization has just succeeded.  So let's
+	  // confirm the "canonical type propagation" of all the
+	  // sub-types that were compared during the comparison of
+	  // 'r'.
+	  env->priv_->confirm_ct_propagation(&r);
+	  if (is_type(&r)->priv_->depends_on_recursive_type())
+	    {
+	      is_type(&r)->priv_->set_does_not_depend_on_recursive_type();
+	      env->priv_->remove_from_types_with_non_confirmed_propagated_ct(&r);
+	    }
+	}
+      else if (value == false)
+	{
+	  // The comparison of the current sub-type failed.  So all
+	  // the types in
+	  // env->prix_->types_with_non_confirmed_propagated_ct_
+	  // should see their tentatively propagated canonical type
+	  // cancelled.
+	  env->priv_->cancel_ct_propagation(&r);
+	  if (is_type(&r)->priv_->depends_on_recursive_type())
+	    {
+	      // The right-hand-side operand cannot carry any tentative
+	      // canonical type at this point.
+	      is_type(&r)->priv_->clear_propagated_canonical_type();
+	      // Reset the marking of the right-hand-side operand as it no
+	      // longer carries a tentative canonical type that might be
+	      // later cancelled.
+	      is_type(&r)->priv_->set_does_not_depend_on_recursive_type();
+	      env->priv_->remove_from_types_with_non_confirmed_propagated_ct(&r);
+	    }
+	}
+    }
+  ABG_RETURN(value);
 }
 
 /// Getter of all types types sorted by their pretty representation.
@@ -1112,8 +1524,8 @@
       return "LANG_Modula2";
     case translation_unit::LANG_Java:
       return "LANG_Java";
-    case translation_unit::LANG_PL1:
-      return "LANG_PL1";
+    case translation_unit::LANG_PLI:
+      return "LANG_PLI";
     case translation_unit::LANG_UPC:
       return "LANG_UPC";
     case translation_unit::LANG_D:
@@ -1178,8 +1590,8 @@
     return translation_unit::LANG_Modula2;
   else if (l == "LANG_Java")
     return translation_unit::LANG_Java;
-  else if (l == "LANG_PL1")
-    return translation_unit::LANG_PL1;
+  else if (l == "LANG_PLI")
+    return translation_unit::LANG_PLI;
   else if (l == "LANG_UPC")
     return translation_unit::LANG_UPC;
   else if (l == "LANG_D")
@@ -1316,7 +1728,6 @@
   //     STT_COMMON. If no such symbol is found, it looks for the
   //     STT_COMMON definition of that name that has the largest size.
   bool			is_common_;
-  bool			is_linux_string_cst_;
   bool			is_in_ksymtab_;
   uint64_t		crc_;
   bool			is_suppressed_;
@@ -1334,7 +1745,6 @@
       visibility_(elf_symbol::DEFAULT_VISIBILITY),
       is_defined_(false),
       is_common_(false),
-      is_linux_string_cst_(false),
       is_in_ksymtab_(false),
       crc_(0),
       is_suppressed_(false)
@@ -1350,7 +1760,6 @@
        bool			  c,
        const elf_symbol::version& ve,
        elf_symbol::visibility	  vi,
-       bool			  is_linux_string_cst,
        bool			  is_in_ksymtab,
        uint64_t			  crc,
        bool			  is_suppressed)
@@ -1364,7 +1773,6 @@
       visibility_(vi),
       is_defined_(d),
       is_common_(c),
-      is_linux_string_cst_(is_linux_string_cst),
       is_in_ksymtab_(is_in_ksymtab),
       crc_(crc),
       is_suppressed_(is_suppressed)
@@ -1411,9 +1819,6 @@
 ///
 /// @param vi the visibility of the symbol.
 ///
-/// @param is_linux_string_cst true if the symbol is a Linux Kernel
-/// string constant defined in the __ksymtab_strings section.
-///
 /// @param crc the CRC (modversions) value of Linux Kernel symbols
 elf_symbol::elf_symbol(const environment* e,
 		       size_t		  i,
@@ -1425,7 +1830,6 @@
 		       bool		  c,
 		       const version&	  ve,
 		       visibility	  vi,
-		       bool		  is_linux_string_cst,
 		       bool		  is_in_ksymtab,
 		       uint64_t		  crc,
 		       bool		  is_suppressed)
@@ -1439,7 +1843,6 @@
 		   c,
 		   ve,
 		   vi,
-		   is_linux_string_cst,
 		   is_in_ksymtab,
 		   crc,
 		   is_suppressed))
@@ -1483,9 +1886,6 @@
 ///
 /// @param vi the visibility of the symbol.
 ///
-/// @param is_linux_string_cst if true, it means the symbol represents
-/// a string constant from a linux kernel binary.
-///
 /// @param crc the CRC (modversions) value of Linux Kernel symbols
 ///
 /// @return a (smart) pointer to a newly created instance of @ref
@@ -1501,13 +1901,11 @@
 		   bool		      c,
 		   const version&     ve,
 		   visibility	      vi,
-		   bool		      is_linux_string_cst,
 		   bool		      is_in_ksymtab,
 		   uint64_t	      crc,
 		   bool		      is_suppressed)
 {
   elf_symbol_sptr sym(new elf_symbol(e, i, s, n, t, b, d, c, ve, vi,
-				     is_linux_string_cst,
 				     is_in_ksymtab, crc, is_suppressed));
   sym->priv_->main_symbol_ = sym;
   return sym;
@@ -1574,15 +1972,6 @@
 elf_symbol::set_index(size_t s)
 {priv_->index_ = s;}
 
-/// Test if the ELF symbol is for a string constant of a Linux binary
-/// defined in the __ksymtab_strings symbol table.
-///
-/// @return true iff ELF symbol is for a string constant of a Linux
-/// binary defined in the __ksymtab_strings symbol table.
-bool
-elf_symbol::get_is_linux_string_cst() const
-{return priv_->is_linux_string_cst_;}
-
 /// Getter for the name of the @ref elf_symbol.
 ///
 /// @return a reference to the name of the @ref symbol.
@@ -2601,6 +2990,8 @@
 {
 }
 
+elf_symbol::version::~version() = default;
+
 /// Cast the version_type into a string that is its name.
 ///
 /// @return the name of the version.
@@ -2773,28 +3164,6 @@
 typedef unordered_map<interned_string,
 		      bool, hash_interned_string> interned_string_bool_map_type;
 
-/// The private data of the @ref environment type.
-struct environment::priv
-{
-  config			 config_;
-  canonical_types_map_type	 canonical_types_;
-  mutable vector<type_base_sptr> sorted_canonical_types_;
-  type_base_sptr		 void_type_;
-  type_base_sptr		 variadic_marker_type_;
-  unordered_set<const class_or_union*>	classes_being_compared_;
-  unordered_set<const function_type*>	fn_types_being_compared_;
-  vector<type_base_sptr>	 extra_live_types_;
-  interned_string_pool		 string_pool_;
-  bool				 canonicalization_is_done_;
-  bool				 do_on_the_fly_canonicalization_;
-  bool				 decl_only_class_equals_definition_;
-
-  priv()
-    : canonicalization_is_done_(),
-      do_on_the_fly_canonicalization_(true),
-      decl_only_class_equals_definition_(false)
-  {}
-};// end struct environment::priv
 
 /// Default constructor of the @ref environment type.
 environment::environment()
@@ -2861,10 +3230,34 @@
     if (!f)
       return false;
 
-    location fl = f->get_location();
-    location sl = s->get_location();
-    if (fl.get_value() != sl.get_value())
-      return fl.get_value() < sl.get_value();
+    // If a decl has artificial location, then use that one over the
+    // natural one.
+    location fl = get_artificial_or_natural_location(f);
+    location sl = get_artificial_or_natural_location(s);
+
+    if (fl.get_value() && sl.get_value())
+      {
+	if (fl.get_is_artificial() == sl.get_is_artificial())
+	  {
+	    // The locations of the two artfifacts have the same
+	    // artificial-ness so they can be compared.
+	    string p1, p2;
+	    unsigned l1 = 0, l2 = 0, c1 = 0, c2 = 0;
+	    fl.expand(p1, l1, c1);
+	    sl.expand(p2, l2, c2);
+	    if (p1 != p2)
+	      return p1 < p2;
+	    if (l1 != l2)
+	      return l1 < l2;
+	    if (c1 != c2)
+	      return c1 < c2;
+	  }
+      }
+    else if (!!fl != !!sl)
+      // So one of the decls doesn't have location data.
+      // The first decl is less than the second if it's the one not
+      // having location data.
+      return !fl && sl;
 
     // We reach this point if location data is useless.
     return (get_pretty_representation(f, true)
@@ -2923,7 +3316,8 @@
     if (f_is_ptr_ref_or_qual != s_is_ptr_ref_or_qual)
       return !f_is_ptr_ref_or_qual && s_is_ptr_ref_or_qual;
 
-    if (f_is_ptr_ref_or_qual && s_is_ptr_ref_or_qual)
+    if (f_is_ptr_ref_or_qual && s_is_ptr_ref_or_qual
+	&& !is_decl(f)->get_location() && !is_decl(s)->get_location())
       {
 	string s1 = get_pretty_representation(f, true);
 	string s2 = get_pretty_representation(s, true);
@@ -3107,6 +3501,70 @@
 environment::decl_only_class_equals_definition(bool f) const
 {priv_->decl_only_class_equals_definition_ = f;}
 
+/// Test if comparing enums is done by looking only at enumerators
+/// values.
+///
+/// For enums, using 'binary-only' equality means looking only at
+/// values of enumerators (not names of enumerators) when comparing
+/// enums.  This means we are only considering the binary equality of
+/// enums, not source equality.
+///
+/// The two enums below are "binary equal", but not "source-level
+/// equal":
+///
+///     enum foo
+///     {
+///       e0 = 0;
+///       e1 = 1;
+///       e2 = 2;
+///     };
+///
+///     enum foo
+///     {
+///       e0 = 0;
+///       e1 = 1;
+///       e2 = 2;
+///       e_added = 1;
+///     };
+///
+/// @return true iff using 'binary-only' equality for enums
+/// comparison.
+bool
+environment::use_enum_binary_only_equality() const
+{return priv_->use_enum_binary_only_equality_;}
+
+/// Setter for the property that determines that comparing enums is
+/// done by looking only at enumerators values.
+///
+/// For enums, using 'binary-only' equality means looking only at
+/// values of enumerators (not names of enumerators) when comparing
+/// enums.  This means we are only considering the binary equality of
+/// enums, not source equality.
+///
+/// The two enums below are "binary equal", but not "source-level
+/// equal":
+///
+///     enum foo
+///     {
+///       e0 = 0;
+///       e1 = 1;
+///       e2 = 2;
+///     };
+///
+///     enum foo
+///     {
+///       e0 = 0;
+///       e1 = 1;
+///       e2 = 2;
+///       e_added = 1;
+///     };
+///
+/// @param f true iff using 'binary-only' equality for enums
+/// comparison.
+void
+environment::use_enum_binary_only_equality(bool f) const
+{priv_->use_enum_binary_only_equality_ = f;}
+
 /// Test if a given type is a void type as defined in the current
 /// environment.
 ///
@@ -3186,6 +3644,207 @@
 environment::get_config() const
 {return priv_->config_;}
 
+#ifdef WITH_DEBUG_SELF_COMPARISON
+/// Setter of the corpus of the input corpus of the self comparison
+/// that takes place when doing "abidw --debug-abidiff <binary>".
+///
+/// The first invocation of this function sets the first corpus of the
+/// self comparison.  The second invocation of this very same function
+/// sets the second corpus of the self comparison.  That second corpus
+/// is supposed to come from the abixml serialization of the first
+/// corpus.
+///
+/// @param c the corpus of the input binary or the corpus of the
+/// abixml serialization of the initial binary input.
+void
+environment::set_self_comparison_debug_input(const corpus_sptr& c)
+{
+  self_comparison_debug_is_on(true);
+  if (priv_->first_self_comparison_corpus_.expired())
+    priv_->first_self_comparison_corpus_ = c;
+  else if (priv_->second_self_comparison_corpus_.expired()
+	   && c.get() != corpus_sptr(priv_->first_self_comparison_corpus_).get())
+    priv_->second_self_comparison_corpus_ = c;
+}
+
+/// Getter for the corpora of the input binary and the intermediate
+/// abixml of the self comparison that takes place when doing
+///   'abidw --debug-abidiff <binary>'.
+///
+/// @param first_corpus output parameter that is set to the corpus of
+/// the input corpus.
+///
+/// @param second_corpus output parameter that is set to the corpus of
+/// the second corpus.
+void
+environment::get_self_comparison_debug_inputs(corpus_sptr& first_corpus,
+					      corpus_sptr& second_corpus)
+{
+    first_corpus = priv_->first_self_comparison_corpus_.lock();
+    second_corpus = priv_->second_self_comparison_corpus_.lock();
+}
+
+/// Turn on/off the self comparison debug mode.
+///
+/// @param f true iff the self comparison debug mode is turned on.
+void
+environment::self_comparison_debug_is_on(bool f)
+{priv_->self_comparison_debug_on_ = f;}
+
+/// Test if we are in the process of the 'self-comparison
+/// debugging' as triggered by 'abidw --debug-abidiff' command.
+///
+/// @return true if self comparison debug is on.
+bool
+environment::self_comparison_debug_is_on() const
+{return priv_->self_comparison_debug_on_;}
+#endif
+
+#ifdef WITH_DEBUG_TYPE_CANONICALIZATION
+/// Set the "type canonicalization debugging" mode, triggered by using
+/// the command: "abidw --debug-tc".
+///
+/// @param flag if true then the type canonicalization debugging mode
+/// is enabled.
+void
+environment::debug_type_canonicalization_is_on(bool flag)
+{priv_->debug_type_canonicalization_ = flag;}
+
+/// Getter of the "type canonicalization debugging" mode, triggered by
+/// using the command: "abidw --debug-tc".
+///
+/// @return true iff the type canonicalization debugging mode is
+/// enabled.
+bool
+environment::debug_type_canonicalization_is_on() const
+{return priv_->debug_type_canonicalization_;}
+#endif // WITH_DEBUG_TYPE_CANONICALIZATION
+
+/// Get the vector of canonical types which have a given "string
+/// representation".
+///
+/// @param 'name', the textual representation of the type as returned
+/// by type_or_decl_base::get_pretty_representation(/*internal=*/true,
+///                                                 /*qualified=*/true)
+///
+/// This is useful to for debugging purposes as it's handy to use from
+/// inside a debugger like GDB.
+///
+/// @return a pointer to the vector of canonical types having the
+/// representation @p name, or nullptr if no type with that
+/// representation exists.
+vector<type_base_sptr>*
+environment::get_canonical_types(const char* name)
+{
+  auto ti = get_canonical_types_map().find(name);
+  if (ti == get_canonical_types_map().end())
+    return nullptr;
+  return &ti->second;
+}
+
+/// Get a given canonical type which has a given "string
+/// representation".
+///
+/// @param 'name', the textual representation of the type as returned
+/// by type_or_decl_base::get_pretty_representation(/*internal=*/true,
+///                                                 /*qualified=*/true).
+///
+/// @param index, the index of the type in the vector of types that
+/// all have the same textual representation @p 'name'.  That vector
+/// is returned by the function environment::get_canonical_types().
+///
+/// @return the canonical type which has the representation @p name,
+/// and which is at index @p index in the vector of canonical types
+/// having that same textual representation.
+type_base*
+environment::get_canonical_type(const char* name, unsigned index)
+{
+  vector<type_base_sptr> *types = get_canonical_types(name);
+  if (!types ||index >= types->size())
+    return nullptr;
+  return (*types)[index].get();
+}
+
+#ifdef WITH_DEBUG_SELF_COMPARISON
+/// Get the set of abixml type-id and the pointer value of the
+/// (canonical) type it's associated to.
+///
+/// This is useful for debugging purposes, especially in the context
+/// of the use of the command:
+///   'abidw --debug-abidiff <binary>'.
+///
+/// @return the set of abixml type-id and the pointer value of the
+/// (canonical) type it's associated to.
+unordered_map<string, uintptr_t>&
+environment::get_type_id_canonical_type_map() const
+{return priv_->type_id_canonical_type_map_;}
+
+/// Getter of the map that associates the values of type pointers to
+/// their type-id strings.
+///
+/// Note that this map is populated at abixml reading time, (by
+/// build_type()) when a given XML element representing a type is
+/// read into a corresponding abigail::ir::type_base.
+///
+/// This is used only for the purpose of debugging the
+/// self-comparison process.  That is, when invoking "abidw
+/// --debug-abidiff".
+///
+/// @return the map that associates the values of type pointers to
+/// their type-id strings.
+unordered_map<uintptr_t, string>&
+environment::get_pointer_type_id_map()
+{return priv_->pointer_type_id_map_;}
+
+/// Getter of the type-id that corresponds to the value of a pointer
+/// to abigail::ir::type_base that was created from the abixml reader.
+///
+/// That value is retrieved from the map returned from
+/// environment::get_pointer_type_id_map().
+///
+/// That map is populated at abixml reading time, (by build_type())
+/// when a given XML element representing a type is read into a
+/// corresponding abigail::ir::type_base.
+///
+/// This is used only for the purpose of debugging the
+/// self-comparison process.  That is, when invoking "abidw
+/// --debug-abidiff".
+///
+/// @return the type-id strings that corresponds
+string
+environment::get_type_id_from_pointer(uintptr_t ptr)
+{
+  auto it = get_pointer_type_id_map().find(ptr);
+  if (it != get_pointer_type_id_map().end())
+    return it->second;
+  return "";
+}
+
+/// Getter of the canonical type of the artifact designated by a
+/// type-id.
+///
+/// That type-id was generated by the abixml writer at the emitting
+/// time of the abixml file.  The corresponding canonical type was
+/// stored in the map returned by
+/// environment::get_type_id_canonical_type_map().
+///
+/// This is useful for debugging purposes, especially in the context
+/// of the use of the command:
+///   'abidw --debug-abidiff <binary>'.
+///
+/// @return the set of abixml type-id and the pointer value of the
+/// (canonical) type it's associated to.
+uintptr_t
+environment::get_canonical_type_from_type_id(const char* type_id)
+{
+  if (!type_id)
+    return 0;
+  auto it = get_type_id_canonical_type_map().find(type_id);
+  if (it != get_type_id_canonical_type_map().end())
+    return it->second;
+  return 0;
+}
+#endif
 // </environment stuff>
 
 // <type_or_decl_base stuff>
@@ -3213,6 +3872,15 @@
   bool				hashing_started_;
   const environment*		env_;
   translation_unit*		translation_unit_;
+  // The location of an artifact as seen from its input by the
+  // artifact reader.  This might be different from the source
+  // location advertised by the original emitter of the artifact
+  // emitter.
+  location			artificial_location_;
+  // Flags if the current ABI artifact is artificial (i.e, *NOT*
+  // generated from the initial source code, but rather either
+  // artificially by the compiler or by libabigail itself).
+  bool				is_artificial_;
 
   /// Constructor of the type_or_decl_base::priv private type.
   ///
@@ -3227,7 +3895,8 @@
       type_or_decl_ptr_(),
       hashing_started_(),
       env_(e),
-      translation_unit_()
+      translation_unit_(),
+      is_artificial_()
   {}
 
   enum type_or_decl_kind
@@ -3303,6 +3972,29 @@
 type_or_decl_base::~type_or_decl_base()
 {}
 
+/// Getter of the flag that says if the artefact is artificial.
+///
+/// Being artificial means it was not explicitely mentionned in the
+/// source code, but was rather artificially created by the compiler
+/// or libabigail.
+///
+/// @return true iff the declaration is artificial.
+bool
+type_or_decl_base::get_is_artificial() const
+{return priv_->is_artificial_;}
+
+/// Setter of the flag that says if the artefact is artificial.
+///
+/// Being artificial means the artefact was not explicitely
+/// mentionned in the source code, but was rather artificially created
+/// by the compiler or by libabigail.
+///
+/// @param f the new value of the flag that says if the artefact is
+/// artificial.
+void
+type_or_decl_base::set_is_artificial(bool f)
+{priv_->is_artificial_ = f;}
+
 /// Getter for the "kind" property of @ref type_or_decl_base type.
 ///
 /// This property holds the identifier bitmap of the runtime type of
@@ -3413,6 +4105,52 @@
 type_or_decl_base::get_environment() const
 {return priv_->env_;}
 
+/// Setter of the artificial location of the artificat.
+///
+/// The artificial location is a location that was artificially
+/// generated by libabigail, not generated by the original emitter of
+/// the ABI meta-data.  For instance, when reading an XML element from
+/// an abixml file, the artificial location is the source location of
+/// the XML element within the file, not the value of the
+/// 'location'property that might be carried by the element.
+///
+/// Artificial locations might be useful to ensure that abixml emitted
+/// by the abixml writer are sorted the same way as the input abixml
+/// read by the reader.
+///
+/// @param l the new artificial location.
+void
+type_or_decl_base::set_artificial_location(const location &l)
+{priv_->artificial_location_ = l;}
+
+/// Getter of the artificial location of the artifact.
+///
+/// The artificial location is a location that was artificially
+/// generated by libabigail, not generated by the original emitter of
+/// the ABI meta-data.  For instance, when reading an XML element from
+/// an abixml file, the artificial location is the source location of
+/// the XML element within the file, not the value of the
+/// 'location'property that might be carried by the element.
+///
+/// Artificial locations might be useful to ensure that the abixml
+/// emitted by the abixml writer is sorted the same way as the input
+/// abixml read by the reader.
+///
+/// @return the new artificial location.
+location&
+type_or_decl_base::get_artificial_location() const
+{return priv_->artificial_location_;}
+
+/// Test if the current ABI artifact carries an artificial location.
+///
+/// @return true iff the current ABI artifact carries an artificial location.
+bool
+type_or_decl_base::has_artificial_location() const
+{
+  return (priv_->artificial_location_
+	  && priv_->artificial_location_.get_is_artificial());
+}
+
 /// Getter of the environment of the current ABI artifact.
 ///
 /// @return the environment of the artifact.
@@ -3587,8 +4325,6 @@
 {
   bool			in_pub_sym_tab_;
   bool			is_anonymous_;
-  bool			is_artificial_;
-  bool			has_anonymous_parent_;
   location		location_;
   context_rel		*context_;
   interned_string	name_;
@@ -3608,29 +4344,26 @@
   // Unline qualified_name_, scoped_name_ contains the name of the
   // decl and the name of its scope; not the qualified name of the
   // scope.
-    interned_string	scoped_name_;
+  interned_string	scoped_name_;
   interned_string	linkage_name_;
   visibility		visibility_;
   decl_base_sptr	declaration_;
   decl_base_wptr	definition_of_declaration_;
   decl_base*		naked_definition_of_declaration_;
   bool			is_declaration_only_;
+  typedef_decl_sptr	naming_typedef_;
 
   priv()
     : in_pub_sym_tab_(false),
       is_anonymous_(true),
-      is_artificial_(false),
-      has_anonymous_parent_(false),
       context_(),
       visibility_(VISIBILITY_DEFAULT),
       naked_definition_of_declaration_(),
       is_declaration_only_(false)
   {}
 
-  priv(interned_string name, const location& locus,
-       interned_string linkage_name, visibility vis)
+  priv(interned_string name, interned_string linkage_name, visibility vis)
     : in_pub_sym_tab_(false),
-      location_(locus),
       context_(),
       name_(name),
       qualified_name_(name),
@@ -3640,20 +4373,8 @@
       is_declaration_only_(false)
   {
     is_anonymous_ = name_.empty();
-    has_anonymous_parent_ = false;
   }
 
-  priv(const location& l)
-    : in_pub_sym_tab_(false),
-      is_anonymous_(true),
-      has_anonymous_parent_(false),
-      location_(l),
-      context_(),
-      visibility_(VISIBILITY_DEFAULT),
-      naked_definition_of_declaration_(),
-      is_declaration_only_(false)
-  {}
-
   ~priv()
   {
     delete context_;
@@ -3679,8 +4400,9 @@
 		     const string&	linkage_name,
 		     visibility	vis)
   : type_or_decl_base(e, ABSTRACT_DECL_BASE),
-    priv_(new priv(e->intern(name), locus, e->intern(linkage_name), vis))
+    priv_(new priv(e->intern(name), e->intern(linkage_name), vis))
 {
+  set_location(locus);
 }
 
 /// Constructor.
@@ -3702,8 +4424,10 @@
 		     const interned_string& linkage_name,
 		     visibility vis)
   : type_or_decl_base(e, ABSTRACT_DECL_BASE),
-    priv_(new priv(name, locus, linkage_name, vis))
-{}
+    priv_(new priv(name, linkage_name, vis))
+{
+  set_location(locus);
+}
 
 /// Constructor for the @ref decl_base type.
 ///
@@ -3714,8 +4438,10 @@
 /// code.
 decl_base::decl_base(const environment* e, const location& l)
   : type_or_decl_base(e, ABSTRACT_DECL_BASE),
-    priv_(new priv(l))
-{}
+    priv_(new priv())
+{
+  set_location(l);
+}
 
 decl_base::decl_base(const decl_base& d)
   : type_or_decl_base(d)
@@ -3870,13 +4596,38 @@
 /// you need to use the method @ref
 /// location_manager::create_new_location().
 ///
+/// Note that there can be two kinds of location.  An artificial
+/// location and a non-artificial one.  The non-artificial location is
+/// the one emitted by the original emitter of the ABI artifact, for
+/// instance, if the ABI artifact comes from debug info, then the
+/// source location that is present in the debug info represent a
+/// non-artificial location.  When looking at an abixml file on the
+/// other hand, the value of the 'location' attribute of an XML
+/// element describing an artifact is the non-artificial location.
+/// The artificial location is the location (line number from the
+/// beginning of the file) of the XML element within the abixml file.
+///
+/// So, if the location that is being set is artificial, note that the
+/// type_or_decl_base::has_artificial_location() method of this decl will
+/// subsequently return true and that artificial location will have to
+/// be retrieved using type_or_decl_base::get_artificial_location().
+/// If the location is non-artificial however,
+/// type_or_decl_base::has_artificial_location() will subsequently
+/// return false and the non-artificial location will have to be
+/// retrieved using decl_base::get_location().
+///
 /// The instance of @ref location_manager that you want is
 /// accessible from the instance of @ref translation_unit that the
 /// current instance of @ref decl_base belongs to, via a call to
 /// translation_unit::get_loc_mgr().
 void
 decl_base::set_location(const location& l)
-{priv_->location_ = l;}
+{
+  if (l.get_is_artificial())
+    set_artificial_location(l);
+  else
+    priv_->location_ = l;
+}
 
 /// Setter for the name of the decl.
 ///
@@ -3908,28 +4659,6 @@
 decl_base::set_is_anonymous(bool f)
 {priv_->is_anonymous_ = f;}
 
-/// Getter of the flag that says if the declaration is artificial.
-///
-/// Being artificial means the parameter was not explicitely
-/// mentionned in the source code, but was rather artificially created
-/// by the compiler.
-///
-/// @return true iff the declaration is artificial.
-bool
-decl_base::get_is_artificial() const
-{return priv_->is_artificial_;}
-
-/// Setter of the flag that says if the declaration is artificial.
-///
-/// Being artificial means the parameter was not explicitely
-/// mentionned in the source code, but was rather artificially created
-/// by the compiler.
-///
-/// @param f the new value of the flag that says if the declaration is
-/// artificial.
-void
-decl_base::set_is_artificial(bool f)
-{priv_->is_artificial_ = f;}
 
 /// Get the "has_anonymous_parent" flag of the current declaration.
 ///
@@ -3940,18 +4669,12 @@
 /// which is anonymous.
 bool
 decl_base::get_has_anonymous_parent() const
-{return priv_->has_anonymous_parent_;}
-
-/// Set the "has_anonymous_parent" flag of the current declaration.
-///
-/// Having an anonymous parent means having a anonymous parent scope
-/// (containing type or namespace) which is either direct or indirect.
-///
-/// @param f set the flag which says if the current decl has a direct
-/// or indirect scope which is anonymous.
-void
-decl_base::set_has_anonymous_parent(bool f) const
-{priv_->has_anonymous_parent_ = f;}
+{
+  scope_decl *scope = get_scope();
+  if (!scope)
+    return false;
+  return scope->get_is_anonymous();
+}
 
 /// @return the logical "OR" of decl_base::get_is_anonymous() and
 /// decl_base::get_has_anonymous_parent().
@@ -3959,6 +4682,57 @@
 decl_base::get_is_anonymous_or_has_anonymous_parent() const
 {return get_is_anonymous() || get_has_anonymous_parent();}
 
+/// Getter for the naming typedef of the current decl.
+///
+/// Consider the C idiom:
+///
+///    typedef struct {int member;} foo_type;
+///
+/// In that idiom, foo_type is the naming typedef of the anonymous
+/// struct that is declared.
+///
+/// @return the naming typedef, if any.  Otherwise, returns nil.
+typedef_decl_sptr
+decl_base::get_naming_typedef() const
+{return priv_->naming_typedef_;}
+
+/// Set the naming typedef of the current instance of @ref decl_base.
+///
+/// Consider the C idiom:
+///
+///    typedef struct {int member;} foo_type;
+///
+/// In that idiom, foo_type is the naming typedef of the anonymous
+/// struct that is declared.
+///
+/// After completion of this function, the decl will not be considered
+/// anonymous anymore.  It's name is going to be the name of the
+/// naming typedef.
+///
+/// @param typedef_type the new naming typedef.
+void
+decl_base::set_naming_typedef(const typedef_decl_sptr& t)
+{
+  // A naming typedef is usually for an anonymous type.
+  ABG_ASSERT(get_is_anonymous()
+	     // Whe the typedef-named decl is saved into abixml, it's
+	     // not anonymous anymore.  Its name is the typedef name.
+	     // So when we read it back, we must still be able to
+	     // apply the naming typedef to the decl.
+	     || t->get_name() == get_name());
+  // Only non canonicalized types can be edited this way.
+  ABG_ASSERT(is_type(this)
+	     && is_type(this)->get_naked_canonical_type() == nullptr);
+
+  priv_->naming_typedef_ = t;
+  set_name(t->get_name());
+  set_qualified_name(t->get_qualified_name());
+  set_is_anonymous(false);
+  // Now that the qualified type of the decl has changed, let's update
+  // the qualified names of the member types of this decls.
+  update_qualified_name(this);
+}
+
 /// Getter for the mangled name.
 ///
 /// @return the new mangled name.
@@ -4033,10 +4807,15 @@
 /// Get the pretty representatin of the current declaration.
 ///
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @param qualified_name if true, names emitted in the pretty
 /// representation are fully qualified.
@@ -4272,7 +5051,37 @@
 	    *k |= LOCAL_NON_TYPE_CHANGE_KIND;
 	}
     }
-  return result;
+  ABG_RETURN(result);
+}
+
+/// Get the name of a decl for the purpose of comparing two decl
+/// names.
+///
+/// This is a sub-routine of the 'equal' overload for decl_base.
+///
+/// This function takes into account the fact that all anonymous names
+/// shall have the same name for the purpose of comparison.
+///
+/// For decls that are part of an anonymous scope, only the
+/// non-qualified name should be taken into account.
+static interned_string
+get_decl_name_for_comparison(const decl_base &d)
+{
+  if (has_generic_anonymous_internal_type_name(&d)
+      && d.get_is_anonymous())
+    {
+      // The decl is anonymous.   It should have the same name ass the
+      // other anymous types of the same kind.
+      string r;
+      r += get_generic_anonymous_internal_type_name(&d);
+      return d.get_environment()->intern(r);
+    }
+
+  interned_string n = (is_anonymous_or_typedef_named(d)
+		       || scope_anonymous_or_typedef_named(d))
+    ? d.get_name()
+    : d.get_qualified_name(/*internal=*/true);
+  return n;
 }
 
 /// Compares two instances of @ref decl_base.
@@ -4311,22 +5120,26 @@
 	  const function_decl *f1 = is_function_decl(&l),
 	    *f2 = is_function_decl(&r);
 	  if (f1 && f2 && function_decls_alias(*f1, *f2))
-	    ;// The two functions are aliases, so they are not different.
+	    ;// The two functions are aliases, so they are not
+	     // different.
 	  else
 	    {
 	      result = false;
 	      if (k)
 		*k |= LOCAL_NON_TYPE_CHANGE_KIND;
 	      else
-		return false;
+		ABG_RETURN_FALSE;
 	    }
 	}
     }
 
-  // This is the name of the decls that we want to compare.
-  interned_string ln = l.get_qualified_name(), rn = r.get_qualified_name();
+  // This is the qualified name of the decls that we want to compare.
+  // We want to use the "internal" version of the qualified name as
+  // that one is stable even for anonymous decls.
+  interned_string ln = get_decl_name_for_comparison(l);
+  interned_string rn = get_decl_name_for_comparison(r);
 
-  /// If both of the current decls have an anonymous scope then let's
+  ;  /// If both of the current decls have an anonymous scope then let's
   /// compare their name component by component by properly handling
   /// anonymous scopes. That's the slow path.
   ///
@@ -4338,8 +5151,7 @@
       && l.get_is_anonymous()
       && !l.get_has_anonymous_parent()
       && r.get_is_anonymous()
-      && !r.get_has_anonymous_parent()
-      && (l.get_qualified_parent_name() == r.get_qualified_parent_name()))
+      && !r.get_has_anonymous_parent())
     // Both decls are anonymous and their scope are *NOT* anonymous.
     // So we consider the decls to have equivalent names (both
     // anonymous, remember).  We are still in the fast path here.
@@ -4359,12 +5171,12 @@
       if (k)
 	*k |= LOCAL_NON_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
   result &= maybe_compare_as_member_decls(l, r, k);
 
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Return true iff the two decls have the same name.
@@ -4929,6 +5741,13 @@
   return var_decl_sptr();
 }
 
+/// Get the last data member of a class type.
+///
+/// @param klass the class type to consider.
+var_decl_sptr
+get_last_data_member(const class_or_union_sptr &klass)
+{return klass->get_non_static_data_members().back();}
+
 /// Test if a decl is an anonymous data member.
 ///
 /// @param d the decl to consider.
@@ -5040,6 +5859,7 @@
 is_anonymous_data_member(const var_decl& d)
 {
   return (is_data_member(d)
+	  && d.get_is_anonymous()
 	  && d.get_name().empty()
 	  && is_class_or_union_type(d.get_type()));
 }
@@ -5113,6 +5933,35 @@
   return class_or_union_sptr();
 }
 
+/// Test if the scope of a given decl is anonymous or anonymous with a
+/// naming typedef.
+///
+/// @param d the decl consider.
+///
+/// @return true iff the scope of @p d is anonymous or anonymous with
+/// a naming typedef.
+bool
+scope_anonymous_or_typedef_named(const decl_base& d)
+{
+  if (d.get_has_anonymous_parent()
+      || (d.get_scope() && d.get_scope()->get_naming_typedef()))
+    return true;
+  return false;
+}
+
+/// Test if a given decl is anonymous or has a naming typedef.
+///
+/// @param d the decl to consider.
+///
+/// @return true iff @p d is anonymous or has a naming typedef.
+bool
+is_anonymous_or_typedef_named(const decl_base& d)
+{
+  if (d.get_is_anonymous() || d.get_naming_typedef())
+    return true;
+  return false;
+}
+
 /// Set the offset of a data member into its containing class.
 ///
 /// @param m the data member to consider.
@@ -5163,6 +6012,35 @@
 get_data_member_offset(const decl_base_sptr d)
 {return get_data_member_offset(dynamic_pointer_cast<var_decl>(d));}
 
+/// Get the offset of the non-static data member that comes after a
+/// given one.
+///
+/// If there is no data member after after the one given to this
+/// function (maybe because the given one is the last data member of
+/// the class type) then the function return false.
+///
+/// @param klass the class to consider.
+///
+/// @param dm the data member before the one we want to retrieve.
+///
+/// @param offset out parameter.  This parameter is set by the
+/// function to the offset of the data member that comes right after
+/// the data member @p dm, iff the function returns true.
+///
+/// @return true iff the data member coming right after @p dm was
+/// found.
+bool
+get_next_data_member_offset(const class_or_union_sptr& klass,
+			    const var_decl_sptr& dm,
+			    uint64_t& offset)
+{
+  var_decl_sptr next_dm = get_next_data_member(klass, dm);
+  if (!next_dm)
+    return false;
+  offset = get_data_member_offset(next_dm);
+  return true;
+}
+
 /// Get the absolute offset of a data member.
 ///
 /// If the data member is part of an anonymous data member then this
@@ -5755,6 +6633,46 @@
   return t->get_canonical_type() ? t->get_canonical_type() : t;
 }
 
+/// Strip qualification from a qualified type, when it makes sense.
+///
+/// DWARF constructs "const reference".  This is redundant because a
+/// reference is always const.  It also constructs the useless "const
+/// void" type.  The issue is these redundant types then leak into the
+/// IR and make for bad diagnostics.
+///
+/// This function thus strips the const qualifier from the type in
+/// that case.  It might contain code to strip other cases like this
+/// in the future.
+///
+/// @param t the type to strip const qualification from.
+///
+/// @return the stripped type or just return @p t.
+decl_base_sptr
+strip_useless_const_qualification(const qualified_type_def_sptr t)
+{
+  if (!t)
+    return t;
+
+  decl_base_sptr result = t;
+  type_base_sptr u = t->get_underlying_type();
+  environment* env = t->get_environment();
+
+  if ((t->get_cv_quals() & qualified_type_def::CV_CONST
+       && (is_reference_type(u)))
+      || (t->get_cv_quals() & qualified_type_def::CV_CONST
+	  && env->is_void_type(u))
+      || t->get_cv_quals() == qualified_type_def::CV_NONE)
+    // Let's strip the const qualifier because a reference is always
+    // 'const' and a const void doesn't make sense.  They will just
+    // lead to spurious changes later down the pipeline, that we'll
+    // have to deal with by doing painful and error-prone editing of
+    // the diff IR.  Dropping that useless and inconsistent artefact
+    // right here seems to be a good way to go.
+    result = is_decl(u);
+
+  return result;
+}
+
 /// Return the leaf underlying type node of a @ref typedef_decl node.
 ///
 /// If the underlying type of a @ref typedef_decl node is itself a
@@ -6061,8 +6979,8 @@
 }
 
 /// Return the leaf underlying or pointed-to type node of a @ref
-/// typedef_decl, @ref pointer_type_def or @ref reference_type_def
-/// node.
+/// typedef_decl, @ref pointer_type_def, @ref reference_type_def,
+/// or @ref array_type_def node.
 ///
 /// @param type the type to peel.
 ///
@@ -6073,7 +6991,8 @@
   type_base_sptr typ = type;
   while (is_typedef(typ)
 	 || is_pointer_type(typ)
-	 || is_reference_type(typ))
+	 || is_reference_type(typ)
+	 || is_array_type(typ))
     {
       if (typedef_decl_sptr t = is_typedef(typ))
 	typ = peel_typedef_type(t);
@@ -6083,6 +7002,9 @@
 
       if (reference_type_def_sptr t = is_reference_type(typ))
 	typ = peel_reference_type(t);
+
+      if (const array_type_def_sptr t = is_array_type(typ))
+	typ = peel_array_type(t);
     }
 
   return typ;
@@ -6100,7 +7022,8 @@
 {
   while (is_typedef(type)
 	 || is_pointer_type(type)
-	 || is_reference_type(type))
+	 || is_reference_type(type)
+	 || is_array_type(type))
     {
       if (const typedef_decl* t = is_typedef(type))
 	type = peel_typedef_type(t);
@@ -6110,6 +7033,9 @@
 
       if (const reference_type_def* t = is_reference_type(type))
 	type = peel_reference_type(t);
+
+      if (const array_type_def* t = is_array_type(type))
+	type = peel_array_type(t);
     }
 
   return const_cast<type_base*>(type);
@@ -6130,6 +7056,7 @@
 {
   while (is_pointer_type(type)
 	 || is_reference_type(type)
+	 || is_array_type(type)
 	 || (peel_qual_type && is_qualified_type(type)))
     {
       if (const pointer_type_def* t = is_pointer_type(type))
@@ -6626,11 +7553,6 @@
 
   update_qualified_name(member);
 
-  // Propagate scope anonymity
-  if (get_has_anonymous_parent()
-      || (!is_global_scope(this) && get_is_anonymous()))
-    member->set_has_anonymous_parent(true);
-
   if (const environment* env = get_environment())
     set_environment_for_artifact(member, env);
 
@@ -6765,7 +7687,7 @@
       if (k)
 	*k |= LOCAL_NON_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
   scope_decl::declarations::const_iterator i, j;
@@ -6782,7 +7704,7 @@
 	      break;
 	    }
 	  else
-	    return false;
+	    ABG_RETURN_FALSE;
 	}
     }
 
@@ -6792,10 +7714,10 @@
       if (k)
 	*k |= LOCAL_NON_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Return true iff both scopes have the same names and have the same
@@ -7392,12 +8314,6 @@
   if (internal && d->get_is_anonymous())
     {
       string r;
-      if (qualified)
-	{
-	  r = d->get_qualified_parent_name();
-	  if (!r.empty())
-	    r += "::";
-	}
       r += get_generic_anonymous_internal_type_name(d);
       return t->get_environment()->intern(r);
     }
@@ -8059,6 +8975,249 @@
 					       internal,
 					       qualified_names);}
 
+/// Get the textual representation of a type for debugging purposes.
+///
+/// If the type is a class/union, this shows the data members, virtual
+/// member functions, size, pointer value of its canonical type, etc.
+/// Otherwise, this just shows the name of the artifact as returned by
+/// type_or_decl_base:get_pretty_representation().
+///
+/// @param artifact the artifact to show a debugging representation of.
+///
+/// @return a debugging string representation of @p artifact.
+string
+get_debug_representation(const type_or_decl_base* artifact)
+{
+  if (!artifact)
+    return string("");
+
+  class_or_union * c = is_class_or_union_type(artifact);
+  if (c)
+    {
+      class_decl *clazz = is_class_type(c);
+      string name = c->get_qualified_name();
+      std::ostringstream o;
+      o << name;
+
+      if (clazz)
+	{
+	  if (!clazz->get_base_specifiers().empty())
+	    o << " :" << std::endl;
+	  for (auto &b : clazz->get_base_specifiers())
+	    {
+	      o << "  ";
+	      if (b->get_is_virtual())
+		o << "virtual ";
+	      o << b->get_base_class()->get_qualified_name()
+		<< std::endl;
+	    }
+	}
+      o << std::endl
+	<< "{"
+	<< "   // size in bits: " << c->get_size_in_bits() << "\n"
+	<< "   // is-declaration-only: " << c->get_is_declaration_only() << "\n"
+	<< "   // definition point: " << get_natural_or_artificial_location(c).expand() << "\n"
+	<< "   // translation unit: " << c->get_translation_unit()->get_absolute_path() << std::endl
+	<< "   // @: " << std::hex << is_type(c)
+	<< ", @canonical: " << c->get_canonical_type().get() << std::dec
+	<< "\n\n";
+
+      for (auto m : c->get_data_members())
+	{
+	  type_base_sptr t = m->get_type();
+	  t = peel_typedef_pointer_or_reference_type(t);
+
+	  o << "  "
+	    << m->get_pretty_representation(/*internal=*/false,
+					    /*qualified=*/false)
+	    << ";";
+
+	  if (t && t->get_canonical_type())
+	    o << " // uses canonical type '@"
+	      << std::hex << t->get_canonical_type().get() << std::dec;
+
+	  o << "'" << std::endl;
+	}
+
+      if (clazz && clazz->has_vtable())
+	{
+	  o << "  // virtual member functions\n\n";
+	  for (auto f : clazz->get_virtual_mem_fns())
+	    o << "  " << f->get_pretty_representation(/*internal=*/false,
+						      /*qualified=*/false)
+	      << ";" << std::endl;
+	}
+
+      o << "};" << std::endl;
+
+      return o.str();
+    }
+  else if (const enum_type_decl* e = is_enum_type(artifact))
+    {
+      string name = e->get_qualified_name();
+      std::ostringstream o;
+      o << name
+	<< " : "
+	<< e->get_underlying_type()->get_pretty_representation(/*internal=*/false,
+							       true)
+	<< "\n"
+	<< "{\n"
+	<< "  // size in bits: " << e->get_size_in_bits() << "\n"
+	<< "  // is-declaration-only: " << e->get_is_declaration_only() << "\n"
+	<< " // definition point: " << get_natural_or_artificial_location(e).expand() << "\n"
+	<< "  // translation unit: "
+	<< e->get_translation_unit()->get_absolute_path() << "\n"
+	<< "  // @: " << std::hex << is_type(e)
+	<< ", @canonical: " << e->get_canonical_type().get() << std::dec
+	<< "\n\n";
+
+      for (const auto &enom : e->get_enumerators())
+	o << "  " << enom.get_name() << " = " << enom.get_value() << ",\n";
+
+      o << "};\n";
+
+      return o.str();
+    }
+  return artifact->get_pretty_representation(/*internal=*/true,
+					     /*qualified=*/true);
+}
+
+/// Get a given data member, referred to by its name, of a class type.
+///
+/// @param clazz the class to consider.
+///
+/// @param member_name name of the data member to get.
+///
+/// @return the resulting data member or nullptr if none was found.
+var_decl_sptr
+get_data_member(class_or_union *clazz, const char* member_name)
+{
+  if (!clazz)
+    return var_decl_sptr();
+  return clazz->find_data_member(member_name);
+}
+
+/// Get a given data member, referred to by its name, of a class type.
+///
+/// @param clazz the class to consider.
+///
+/// @param member_name name of the data member to get.
+///
+/// @return the resulting data member or nullptr if none was found.
+var_decl_sptr
+get_data_member(type_base *clazz, const char* member_name)
+{return get_data_member(is_class_or_union_type(clazz), member_name);}
+
+/// Get the non-artificial (natural) location of a decl.
+///
+/// If the decl doesn't have a natural location then return its
+/// artificial one.
+///
+/// @param decl the decl to consider.
+///
+/// @return the natural location @p decl if it has one; otherwise,
+/// return its artificial one.
+const location&
+get_natural_or_artificial_location(const decl_base* decl)
+{
+  ABG_ASSERT(decl);
+
+  if (decl->get_location())
+    return decl->get_location();
+  return decl->get_artificial_location();
+}
+
+/// Get the artificial location of a decl.
+///
+/// If the decl doesn't have an artificial location then return its
+/// natural one.
+///
+/// @param decl the decl to consider.
+///
+/// @return the artificial location @p decl if it has one; otherwise,
+/// return its natural one.
+const location&
+get_artificial_or_natural_location(const decl_base* decl)
+{
+  ABG_ASSERT(decl);
+
+  if (decl->has_artificial_location())
+    return decl->get_artificial_location();
+  return decl->get_location();
+}
+
+/// Emit a textual representation of an artifact to std error stream
+/// for debugging purposes.
+///
+/// This is useful to invoke from within a command line debugger like
+/// GDB to help make sense of a given ABI artifact.
+///
+/// @param artifact the ABI artifact to emit the debugging
+/// representation for.
+///
+/// @return the artifact @p artifact.
+type_or_decl_base*
+debug(const type_or_decl_base* artifact)
+{
+  std::cerr << get_debug_representation(artifact) << std::endl;
+  return const_cast<type_or_decl_base*>(artifact);
+}
+
+/// Emit a textual representation of an artifact to std error stream
+/// for debugging purposes.
+///
+/// This is useful to invoke from within a command line debugger like
+/// GDB to help make sense of a given ABI artifact.
+///
+/// @param artifact the ABI artifact to emit the debugging
+/// representation for.
+///
+/// @return the artifact @p artifact.
+type_base*
+debug(const type_base* artifact)
+{
+  debug(static_cast<const type_or_decl_base*>(artifact));
+  return const_cast<type_base*>(artifact);
+}
+
+/// Emit a textual representation of an artifact to std error stream
+/// for debugging purposes.
+///
+/// This is useful to invoke from within a command line debugger like
+/// GDB to help make sense of a given ABI artifact.
+///
+/// @param artifact the ABI artifact to emit the debugging
+/// representation for.
+///
+/// @return the artifact @p artifact.
+decl_base*
+debug(const decl_base* artifact)
+{
+  debug(static_cast<const type_or_decl_base*>(artifact));
+  return const_cast<decl_base*>(artifact);
+}
+
+/// Test if two ABI artifacts are equal.
+///
+/// This can be useful when used from the command line of a debugger
+/// like GDB.
+///
+/// @param l the first ABI artifact to consider in the comparison.
+///
+/// @param r the second ABI artifact to consider in the comparison.
+///
+/// @return true iff @p l equals @p r.
+bool
+debug_equals(const type_or_decl_base *l, const type_or_decl_base *r)
+{
+  if (!!l != !!r)
+    return false;
+  if (!l && !r)
+    return true;
+
+  return (*l == *r);
+}
+
 /// By looking at the language of the TU a given ABI artifact belongs
 /// to, test if the ONE Definition Rule should apply.
 ///
@@ -8496,9 +9655,9 @@
 ///
 /// @return true iff @p t is anonymous.
 bool
-is_anonymous_type(type_base* t)
+is_anonymous_type(const type_base* t)
 {
-  decl_base* d = get_type_declaration(t);
+  const decl_base* d = get_type_declaration(t);
   if (d)
     if (d->get_is_anonymous())
       {
@@ -8880,32 +10039,6 @@
 is_qualified_type(const type_or_decl_base_sptr& t)
 {return dynamic_pointer_cast<qualified_type_def>(t);}
 
-/// Strip a type from its top level no-op qualifier.
-///
-/// Note that a no-op qualifier is how we represents, for instance, a
-/// "const reference".  As a reference is always const, that const
-/// qualifier just adds noise in terms of change analysis.  Se we
-/// represent it as a no-op qualifier so that we can strip it.
-///
-/// @param t to type to strip from its potential top-level no-op
-/// qualifier.
-///
-/// @return If @t is a no-op qualified type, then return the first
-/// underlying type that is not a no-op qualified type.
-type_base_sptr
-look_through_no_op_qualified_type(const type_base_sptr& t)
-{
-  type_base_sptr ty;
-  if (qualified_type_def_sptr qt = is_qualified_type(t))
-    if (qt->get_cv_quals() == qualified_type_def::CV_NONE)
-      ty = qt->get_underlying_type();
-
-  if (is_qualified_type(ty))
-    return look_through_no_op_qualified_type(ty);
-
-  return ty ? ty : t;
-}
-
 /// Test whether a type is a function_type.
 ///
 /// @param t the type to test.
@@ -8979,16 +10112,6 @@
 /// If a class (or union) is a decl-only class, get its definition.
 /// Otherwise, just return the initial class.
 ///
-/// @param the_class the class (or union) to consider.
-///
-/// @return either the definition of the class, or the class itself.
-class_or_union_sptr
-look_through_decl_only_class(const class_or_union& the_class)
-{return is_class_or_union_type(look_through_decl_only(the_class));}
-
-/// If a class (or union) is a decl-only class, get its definition.
-/// Otherwise, just return the initial class.
-///
 /// @param klass the class (or union) to consider.
 ///
 /// @return either the definition of the class, or the class itself.
@@ -8999,16 +10122,6 @@
 /// If an enum is a decl-only enum, get its definition.
 /// Otherwise, just return the initial enum.
 ///
-/// @param the_enum the enum to consider.
-///
-/// @return either the definition of the enum, or the enum itself.
-enum_type_decl_sptr
-look_through_decl_only_enum(const enum_type_decl& the_enum)
-{return is_enum_type(look_through_decl_only(the_enum));}
-
-/// If an enum is a decl-only enum, get its definition.
-/// Otherwise, just return the initial enum.
-///
 /// @param enom the enum to consider.
 ///
 /// @return either the definition of the enum, or the enum itself.
@@ -9016,28 +10129,6 @@
 look_through_decl_only_enum(enum_type_decl_sptr enom)
 {return is_enum_type(look_through_decl_only(enom));}
 
-/// If a decl is decl-only get its definition.  Otherwise, just return nil.
-///
-/// @param d the decl to consider.
-///
-/// @return either the definition of the decl, or nil.
-decl_base_sptr
-look_through_decl_only(const decl_base& d)
-{
-  decl_base_sptr decl;
-  if (d.get_is_declaration_only())
-    decl = d.get_definition_of_declaration();
-
-  if (!decl)
-    return decl;
-
-  while (decl->get_is_declaration_only()
-	 && decl->get_definition_of_declaration())
-    decl = decl->get_definition_of_declaration();
-
-  return decl;
-}
-
 /// If a decl is decl-only enum, get its definition.  Otherwise, just
 /// return the initial decl.
 ///
@@ -9047,14 +10138,8 @@
 decl_base*
 look_through_decl_only(decl_base* d)
 {
-  if (!d)
-    return d;
-
-  decl_base* result = look_through_decl_only(*d).get();
-  if (!result)
-    result = d;
-
-  return result;
+  decl_base_sptr decl(d, sptr_utils::noop_deleter());
+  return look_through_decl_only(decl).get();
 }
 
 /// If a decl is decl-only get its definition.  Otherwise, just return nil.
@@ -9063,16 +10148,20 @@
 ///
 /// @return either the definition of the decl, or nil.
 decl_base_sptr
-look_through_decl_only(const decl_base_sptr& d)
+look_through_decl_only(decl_base_sptr d)
 {
   if (!d)
     return d;
 
-  decl_base_sptr result = look_through_decl_only(*d);
-  if (!result)
-    result = d;
+  while (d->get_is_declaration_only())
+    {
+      decl_base_sptr definition = d->get_definition_of_declaration();
+      if (!definition)
+        break;
+      d = definition;
+    }
 
-  return result;
+  return d;
 }
 
 /// Tests if a declaration is a variable declaration.
@@ -12391,44 +13480,7 @@
 {
 }
 
-// <type_base definitions>
-
-/// Definition of the private data of @ref type_base.
-struct type_base::priv
-{
-  size_t		size_in_bits;
-  size_t		alignment_in_bits;
-  type_base_wptr	canonical_type;
-  // The data member below holds the canonical type that is managed by
-  // the smart pointer referenced by the canonical_type data member
-  // above.  We are storing this underlying (naked) pointer here, so
-  // that users can access it *fast*.  Otherwise, accessing
-  // canonical_type above implies creating a shared_ptr, and that has
-  // been measured to be slow for some performance hot spots.
-  type_base*		naked_canonical_type;
-  // Computing the representation of a type again and again can be
-  // costly.  So we cache the internal and non-internal type
-  // representation strings here.
-  interned_string	internal_cached_repr_;
-  interned_string	cached_repr_;
-
-  priv()
-    : size_in_bits(),
-      alignment_in_bits(),
-      naked_canonical_type()
-  {}
-
-  priv(size_t s,
-       size_t a,
-       type_base_sptr c = type_base_sptr())
-    : size_in_bits(s),
-      alignment_in_bits(a),
-      canonical_type(c),
-      naked_canonical_type(c.get())
-  {}
-}; // end struct type_base::priv
-
-static void
+static bool
 maybe_propagate_canonical_type(const type_base& lhs_type,
 			       const type_base& rhs_type);
 
@@ -12474,6 +13526,16 @@
       || (c2 && c2->get_is_anonymous() && !c2->get_naming_typedef()))
     return false;
 
+  // Two anonymous classes with naming typedefs should have the same
+  // typedef name.
+  if (c1
+      && c2
+      && c1->get_is_anonymous() && c1->get_naming_typedef()
+      && c2->get_is_anonymous() && c2->get_naming_typedef())
+    if (c1->get_naming_typedef()->get_name()
+	!= c2->get_naming_typedef()->get_name())
+      return false;
+
   // Two anonymous enum types cannot be eligible to this optimization.
   if (const enum_type_decl *e1 = is_enum_type(&t1))
     if (const enum_type_decl *e2 = is_enum_type(&t2))
@@ -12532,6 +13594,61 @@
   return false;
 }
 
+
+/// Compare a type T against a canonical type.
+///
+/// This function is called during the canonicalization process of the
+/// type T.  T is called the "candidate type" because it's in the
+/// process of being canonicalized.  Meaning, it's going to be
+/// compared to a canonical type C.  If T equals C, then the canonical
+/// type of T is C.
+///
+/// The purpose of this function is to allow the debugging of the
+/// canonicalization of T, if that debugging is activated by
+/// configuring the libabigail package with
+/// --enable-debug-type-canonicalization and by running "abidw
+/// --debug-tc".  In that case, T is going to be compared to C twice:
+/// once with canonical equality and once with structural equality.
+/// The two comparisons must be equal.  Otherwise, the
+/// canonicalization process is said to be faulty and this function
+/// aborts.
+///
+/// This is a sub-routine of type_base::get_canonical_type_for.
+///
+/// @param canonical_type the canonical type to compare the candidate
+/// type against.
+///
+/// @param candidate_type the candidate type to compare against the
+/// canonical type.
+///
+/// @return true iff @p canonical_type equals @p candidate_type.
+///
+static bool
+compare_types_during_canonicalization(const type_base_sptr& canonical_type,
+				      const type_base_sptr& candidate_type)
+{
+#ifdef WITH_DEBUG_TYPE_CANONICALIZATION
+  environment *env = canonical_type->get_environment();
+  if (env->debug_type_canonicalization_is_on())
+    {
+      bool canonical_equality = false, structural_equality = false;
+      env->priv_->use_canonical_type_comparison_ = true;
+      canonical_equality = canonical_type == candidate_type;
+      env->priv_->use_canonical_type_comparison_ = false;
+      structural_equality = canonical_type == candidate_type;
+      if (canonical_equality != structural_equality)
+	{
+	  std::cerr << "structural & canonical equality different for type: "
+		    << canonical_type->get_pretty_representation(true, true)
+		    << std::endl;
+	  ABG_ASSERT_NOT_REACHED;
+	}
+      return structural_equality;
+    }
+#endif //end WITH_DEBUG_TYPE_CANONICALIZATION
+  return canonical_type == candidate_type;
+}
+
 /// Compute the canonical type for a given instance of @ref type_base.
 ///
 /// Consider two types T and T'.  The canonical type of T, denoted
@@ -12563,6 +13680,10 @@
   environment* env = t->get_environment();
   ABG_ASSERT(env);
 
+  if (is_non_canonicalized_type(t))
+    // This type should not be canonicalized!
+    return type_base_sptr();
+
   bool decl_only_class_equals_definition =
     (odr_is_relevant(*t) || env->decl_only_class_equals_definition());
 
@@ -12662,8 +13783,8 @@
 	  // Compare types by considering that decl-only classes don't
 	  // equal their definition.
 	  env->decl_only_class_equals_definition(false);
-	  bool equal = types_defined_same_linux_kernel_corpus_public(**it, *t)
-		       || *it == t;
+	  bool equal = (types_defined_same_linux_kernel_corpus_public(**it, *t)
+			|| compare_types_during_canonicalization(*it, t));
 	  // Restore the state of the on-the-fly-canonicalization and
 	  // the decl-only-class-being-equal-to-a-matching-definition
 	  // flags.
@@ -12676,6 +13797,71 @@
 	      break;
 	    }
 	}
+#ifdef WITH_DEBUG_SELF_COMPARISON
+      if (env->self_comparison_debug_is_on())
+	{
+	  // So we are debugging the canonicalization process,
+	  // possibly via the use of 'abidw --debug-abidiff <binary>'.
+	  corpus_sptr corp1, corp2;
+	  env->get_self_comparison_debug_inputs(corp1, corp2);
+	  if (corp1 && corp2 && t->get_corpus() == corp2.get())
+	    {
+	      // If 't' comes from the second corpus, then it *must*
+	      // be equal to its matching canonical type coming from
+	      // the first corpus because the second corpus is the
+	      // abixml representation of the first corpus.  In other
+	      // words, all types coming from the second corpus must
+	      // have canonical types coming from the first corpus.
+	      if (result)
+		{
+		  if (!env->priv_->
+		      check_canonical_type_from_abixml_during_self_comp(t,
+									result))
+		    // The canonical type of the type re-read from abixml
+		    // type doesn't match the canonical type that was
+		    // initially serialized down.
+		    std::cerr << "error: wrong canonical type for '"
+			      << repr
+			      << "' / type: @"
+			      << std::hex
+			      << t.get()
+			      << "/ canon: @"
+			      << result.get()
+			      << std::endl;
+		}
+	      else //!result
+		{
+		  uintptr_t ptr_val = reinterpret_cast<uintptr_t>(t.get());
+		  string type_id = env->get_type_id_from_pointer(ptr_val);
+		  if (type_id.empty())
+		    type_id = "type-id-<not-found>";
+		  // We are in the case where 't' is different from all
+		  // the canonical types of the same name that come from
+		  // the first corpus.
+		  //
+		  // If 't' indeed comes from the second corpus then this
+		  // clearly is a canonicalization failure.
+		  //
+		  // There was a problem either during the serialization
+		  // of 't' into abixml, or during the de-serialization
+		  // from abixml into abigail::ir.  Further debugging is
+		  // needed to determine what that root cause problem is.
+		  //
+		  // Note that the first canonicalization problem of this
+		  // kind must be fixed before looking at the subsequent
+		  // ones, because the later might well just be
+		  // consequences of the former.
+		  std::cerr << "error: wrong induced canonical type for '"
+			    << repr
+			    << "' from second corpus"
+			    << ", ptr: " << std::hex << t.get()
+			    << "type-id: " << type_id
+			    << std::endl;
+		}
+	    }
+	}
+#endif
+
       if (!result)
 	{
 	  v.push_back(t);
@@ -12711,8 +13897,9 @@
 maybe_adjust_canonical_type(const type_base_sptr& canonical,
 			    const type_base_sptr& type)
 {
-  if (// If 'type' is *NOT* a newly canonicalized type ...
-      type->get_naked_canonical_type()
+  if (!canonical
+      // If 'type' is *NOT* a newly canonicalized type ...
+      || type->get_naked_canonical_type()
       // ... or if 'type' is it's own canonical type, then get out.
       || type.get() == canonical.get())
     return;
@@ -12751,6 +13938,15 @@
 	      }
 	}
     }
+
+  // If an artificial function type equals a non-artfificial one in
+  // the system, then the canonical type of both should be deemed
+  // non-artificial.  This is important because only non-artificial
+  // canonical function types are emitted out into abixml, so if don't
+  // do this we risk missing to emit some function types.
+  if (is_function_type(type))
+    if (type->get_is_artificial() != canonical->get_is_artificial())
+      canonical->set_is_artificial(false);
 }
 
 /// Compute the canonical type of a given type.
@@ -12798,9 +13994,23 @@
 	// Add the canonical type to the set of canonical types
 	// belonging to its scope.
 	if (scope)
-	  scope->get_canonical_types().insert(canonical);
-	//else, if the type doesn't have a scope, it's doesn't meant
-	// to be emitted.  This can be the case for the result of the
+	  {
+	    if (is_type(scope))
+	      // The scope in question is itself a type (e.g, a class
+	      // or union).  Let's call that type ST.  We want to add
+	      // 'canonical' to the set of canonical types belonging
+	      // to ST.
+	      if (type_base_sptr c = is_type(scope)->get_canonical_type())
+		// We want to add 'canonical' to set of canonical
+		// types belonging to the canonical type of ST.  That
+		// way, just looking at the canonical type of ST is
+		// enough to get the types that belong to the scope of
+		// the class of equivalence of ST.
+		scope = is_scope_decl(is_decl(c)).get();
+	    scope->get_canonical_types().insert(canonical);
+	  }
+	// else, if the type doesn't have a scope, it's not meant to be
+	// emitted.  This can be the case for the result of the
 	// function strip_typedef, for instance.
       }
 
@@ -12923,7 +14133,7 @@
   if (!result)
     if (k)
       *k |= LOCAL_TYPE_CHANGE_KIND;
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Return true iff both type declarations are equal.
@@ -13384,12 +14594,12 @@
 		       static_cast<const decl_base&>(r),
 		       k);
   if (!k && !result)
-    return false;
+    ABG_RETURN_FALSE;
 
   result &= equals(static_cast<const type_base&>(l),
 		   static_cast<const type_base&>(r),
 		   k);
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Return true if both types equals.
@@ -13476,10 +14686,15 @@
 /// Get the pretty representation of the current instance of @ref
 /// type_decl.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @param qualified_name if true, names emitted in the pretty
 /// representation are fully qualified.
@@ -13575,13 +14790,13 @@
 		  k);
 
   if (!k && !result)
-    return false;
+    ABG_RETURN_FALSE;
 
   result &= equals(static_cast<const type_base&>(l),
 		   static_cast<const type_base&>(r),
 		   k);
 
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Equality operator between two scope_type_decl.
@@ -13693,10 +14908,15 @@
 /// Build and return a copy of the pretty representation of the
 /// namespace.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @param qualified_name if true, names emitted in the pretty
 /// representation are fully qualified.
@@ -13817,6 +15037,10 @@
     : cv_quals_(quals),
       underlying_type_(t)
   {}
+
+    priv(qualified_type_def::CV quals)
+    : cv_quals_(quals)
+  {}
 };// end class qualified_type_def::priv
 
 /// Build the name of the current instance of qualified type.
@@ -13832,11 +15056,17 @@
 string
 qualified_type_def::build_name(bool fully_qualified, bool internal) const
 {
-  ABG_ASSERT(get_underlying_type());
+  type_base_sptr t = get_underlying_type();
+  if (!t)
+    // The qualified type might temporarily have no underlying type,
+    // especially during the construction of the type, while the
+    // underlying type is not yet constructed.  In that case, let's do
+    // like if the underlying type is the 'void' type.
+    t = get_environment()->get_void_type();
 
-  return get_name_of_qualified_type(get_underlying_type(),
-				    get_cv_quals(),
-				    fully_qualified, internal);
+  return get_name_of_qualified_type(t, get_cv_quals(),
+				    fully_qualified,
+				    internal);
 }
 
 /// This function is automatically invoked whenever an instance of
@@ -13875,6 +15105,32 @@
   set_name(name);
 }
 
+/// Constructor of the qualified_type_def
+///
+/// @param env the environment of the type.
+///
+/// @param quals a bitfield representing the const/volatile qualifiers
+///
+/// @param locus the location of the qualified type definition
+qualified_type_def::qualified_type_def(environment* env,
+				       CV quals,
+				       const location& locus)
+  : type_or_decl_base(env,
+		      QUALIFIED_TYPE
+		      | ABSTRACT_TYPE_BASE
+		      | ABSTRACT_DECL_BASE),
+    type_base(env, /*size_in_bits=*/0,
+	      /*alignment_in_bits=*/0),
+    decl_base(env, "", locus, ""),
+    priv_(new priv(quals))
+{
+  runtime_type_instance(this);
+  // We don't yet have an underlying type.  So for naming purpose,
+  // let's temporarily pretend the underlying type is 'void'.
+  interned_string name = env->intern("void");
+  set_name(name);
+}
+
 /// Get the size of the qualified type def.
 ///
 /// This is an overload for type_base::get_size_in_bits().
@@ -13883,9 +15139,16 @@
 size_t
 qualified_type_def::get_size_in_bits() const
 {
-  size_t s = get_underlying_type()->get_size_in_bits();
-  if (s != type_base::get_size_in_bits())
-    const_cast<qualified_type_def*>(this)->set_size_in_bits(s);
+  size_t s = 0;
+  if (type_base_sptr ut = get_underlying_type())
+    {
+      // We do have the underlying type properly set, so let's make
+      // the size of the qualified type match the size of its
+      // underlying type.
+      s = ut->get_size_in_bits();
+      if (s != type_base::get_size_in_bits())
+	const_cast<qualified_type_def*>(this)->set_size_in_bits(s);
+    }
   return type_base::get_size_in_bits();
 }
 
@@ -13918,7 +15181,7 @@
       if (k)
 	*k |= LOCAL_NON_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
   if (l.get_underlying_type() != r.get_underlying_type())
@@ -13940,10 +15203,10 @@
 	// putting it here to maintenance; that is, so that adding
 	// subsequent clauses needed to compare two qualified types
 	// later still works.
-	return false;
+	ABG_RETURN_FALSE;
     }
 
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Equality operator for qualified types.
@@ -14135,7 +15398,25 @@
 /// @param t the new underlying type.
 void
 qualified_type_def::set_underlying_type(const type_base_sptr& t)
-{priv_->underlying_type_ = t;}
+{
+  ABG_ASSERT(t);
+  priv_->underlying_type_ = t;
+  // Now we need to update other properties that depend on the new underlying type.
+  set_size_in_bits(t->get_size_in_bits());
+  set_alignment_in_bits(t->get_alignment_in_bits());
+  interned_string name = get_environment()->intern(build_name(false));
+  set_name(name);
+  if (scope_decl* s = get_scope())
+      {
+	// Now that the name has been updated, we need to update the
+	// lookup maps accordingly.
+	scope_decl::declarations::iterator i;
+	if (s->find_iterator_for_member(this, i))
+	  maybe_update_types_lookup_map(*i);
+	else
+	  ABG_ASSERT_NOT_REACHED;
+      }
+}
 
 /// Non-member equality operator for @ref qualified_type_def
 ///
@@ -14260,6 +15541,16 @@
 pointer_type_def::on_canonical_type_set()
 {clear_qualified_name();}
 
+
+///Constructor of @ref pointer_type_def.
+///
+/// @param pointed_to the pointed-to type.
+///
+/// @param size_in_bits the size of the type, in bits.
+///
+/// @param align_in_bits the alignment of the type, in bits.
+///
+/// @param locus the source location where the type was defined.
 pointer_type_def::pointer_type_def(const type_base_sptr&	pointed_to,
 				   size_t			size_in_bits,
 				   size_t			align_in_bits,
@@ -14287,6 +15578,55 @@
     {}
 }
 
+///Constructor of @ref pointer_type_def.
+///
+/// @param env the environment of the type.
+///
+/// @param size_in_bits the size of the type, in bits.
+///
+/// @param align_in_bits the alignment of the type, in bits.
+///
+/// @param locus the source location where the type was defined.
+pointer_type_def::pointer_type_def(environment* env, size_t size_in_bits,
+				   size_t alignment_in_bits,
+				   const location& locus)
+  : type_or_decl_base(env,
+		      POINTER_TYPE
+		      | ABSTRACT_TYPE_BASE
+		      | ABSTRACT_DECL_BASE),
+    type_base(env, size_in_bits, alignment_in_bits),
+    decl_base(env, "", locus, ""),
+    priv_(new priv())
+{
+  runtime_type_instance(this);
+  string name = string("void") + "*";
+  set_name(env->intern(name));
+}
+
+/// Set the pointed-to type of the pointer.
+///
+/// @param t the new pointed-to type.
+void
+pointer_type_def::set_pointed_to_type(const type_base_sptr& t)
+{
+  ABG_ASSERT(t);
+  priv_->pointed_to_type_ = t;
+  priv_->naked_pointed_to_type_ = t.get();
+
+  try
+    {
+      const environment* env = t->get_environment();
+      ABG_ASSERT(get_environment() == env);
+      decl_base_sptr pto = dynamic_pointer_cast<decl_base>(t);
+      string name = (pto ? pto->get_name() : string("void")) + "*";
+      set_name(env->intern(name));
+      if (pto)
+	set_visibility(pto->get_visibility());
+    }
+  catch (...)
+    {}
+}
+
 /// Compares two instances of @ref pointer_type_def.
 ///
 /// If the two intances are different, set a bitfield to give some
@@ -14309,9 +15649,7 @@
 bool
 equals(const pointer_type_def& l, const pointer_type_def& r, change_kind* k)
 {
-  // Compare the pointed-to-types modulo the typedefs they might have
-  bool result = (peel_typedef_type(l.get_pointed_to_type())
-		 == peel_typedef_type(r.get_pointed_to_type()));
+  bool result = l.get_pointed_to_type() == r.get_pointed_to_type();
   if (!result)
     if (k)
       {
@@ -14323,7 +15661,7 @@
 	*k |= SUBTYPE_CHANGE_KIND;
       }
 
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Return true iff both instances of pointer_type_def are equal.
@@ -14402,6 +15740,9 @@
 /// of @ref pointer_type_def.  Subsequent invocations of this function
 /// return the cached value.
 ///
+/// Note that this function should work even if the underlying type is
+/// momentarily empty.
+///
 /// @param internal set to true if the call is intended for an
 /// internal use (for technical use inside the library itself), false
 /// otherwise.  If you don't know what this is for, then set it to
@@ -14418,10 +15759,11 @@
       if (get_canonical_type())
 	{
 	  if (priv_->internal_qualified_name_.empty())
-	    priv_->internal_qualified_name_ =
-	      get_name_of_pointer_to_type(*pointed_to_type,
-					  /*qualified_name=*/true,
-					  /*internal=*/true);
+	    if (pointed_to_type)
+	      priv_->internal_qualified_name_ =
+		get_name_of_pointer_to_type(*pointed_to_type,
+					    /*qualified_name=*/true,
+					    /*internal=*/true);
 	  return priv_->internal_qualified_name_;
 	}
       else
@@ -14430,10 +15772,11 @@
 	  // (and so its name) can change.  So let's invalidate the
 	  // cache where we store its name at each invocation of this
 	  // function.
-	  priv_->temp_internal_qualified_name_ =
-	    get_name_of_pointer_to_type(*pointed_to_type,
-					/*qualified_name=*/true,
-					/*internal=*/true);
+	  if (pointed_to_type)
+	    priv_->temp_internal_qualified_name_ =
+	      get_name_of_pointer_to_type(*pointed_to_type,
+					  /*qualified_name=*/true,
+					  /*internal=*/true);
 	  return priv_->temp_internal_qualified_name_;
 	}
     }
@@ -14454,10 +15797,11 @@
 	  // (and so its name) can change.  So let's invalidate the
 	  // cache where we store its name at each invocation of this
 	  // function.
-	  set_qualified_name
-	    (get_name_of_pointer_to_type(*pointed_to_type,
-					 /*qualified_name=*/true,
-					 /*internal=*/false));
+	  if (pointed_to_type)
+	    set_qualified_name
+	      (get_name_of_pointer_to_type(*pointed_to_type,
+					   /*qualified_name=*/true,
+					   /*internal=*/false));
 	  return decl_base::peek_qualified_name();
 	}
     }
@@ -14547,6 +15891,18 @@
 reference_type_def::on_canonical_type_set()
 {clear_qualified_name();}
 
+/// Constructor of the reference_type_def type.
+///
+/// @param pointed_to the pointed to type.
+///
+/// @param lvalue wether the reference is an lvalue reference.  If
+/// false, the reference is an rvalue one.
+///
+/// @param size_in_bits the size of the type, in bits.
+///
+/// @param align_in_bits the alignment of the type, in bits.
+///
+/// @param locus the source location of the type.
 reference_type_def::reference_type_def(const type_base_sptr	pointed_to,
 				       bool			lvalue,
 				       size_t			size_in_bits,
@@ -14587,6 +15943,71 @@
     {}
 }
 
+/// Constructor of the reference_type_def type.
+///
+/// This one creates a type that has no pointed-to type, temporarily.
+/// This is useful for cases where the underlying type is not yet
+/// available.  It can be set later using
+/// reference_type_def::set_pointed_to_type().
+///
+/// @param env the environment of the type.
+///
+/// @param lvalue wether the reference is an lvalue reference.  If
+/// false, the reference is an rvalue one.
+///
+/// @param size_in_bits the size of the type, in bits.
+///
+/// @param align_in_bits the alignment of the type, in bits.
+///
+/// @param locus the source location of the type.
+reference_type_def::reference_type_def(const environment* env, bool lvalue,
+				       size_t size_in_bits,
+				       size_t alignment_in_bits,
+				       const location& locus)
+  : type_or_decl_base(env,
+		      REFERENCE_TYPE
+		      | ABSTRACT_TYPE_BASE
+		      | ABSTRACT_DECL_BASE),
+    type_base(env, size_in_bits, alignment_in_bits),
+    decl_base(env, "", locus, ""),
+    is_lvalue_(lvalue)
+{
+  runtime_type_instance(this);
+  string name = "void&";
+  if (!is_lvalue())
+    name += "&";
+  ABG_ASSERT(env);
+  set_name(env->intern(name));
+  pointed_to_type_ = type_base_wptr(env->get_void_type());
+}
+
+/// Setter of the pointed_to type of the current reference type.
+///
+/// @param pointed_to the new pointed to type.
+void
+reference_type_def::set_pointed_to_type(type_base_sptr& pointed_to_type)
+{
+  ABG_ASSERT(pointed_to_type);
+  pointed_to_type_ = pointed_to_type;
+
+  decl_base_sptr pto;
+  try
+    {pto = dynamic_pointer_cast<decl_base>(pointed_to_type);}
+  catch (...)
+    {}
+
+  if (pto)
+    {
+      set_visibility(pto->get_visibility());
+      string name = string(pto->get_name()) + "&";
+      if (!is_lvalue())
+	name += "&";
+      environment* env = pto->get_environment();
+      ABG_ASSERT(env && env == get_environment());
+      set_name(env->intern(name));
+    }
+}
+
 /// Compares two instances of @ref reference_type_def.
 ///
 /// If the two intances are different, set a bitfield to give some
@@ -14613,12 +16034,11 @@
     {
       if (k)
 	*k |= LOCAL_TYPE_CHANGE_KIND;
-      return false;
+      ABG_RETURN_FALSE;
     }
 
   // Compare the pointed-to-types modulo the typedefs they might have
-  bool result = (peel_typedef_type(l.get_pointed_to_type())
-		 == (peel_typedef_type(r.get_pointed_to_type())));
+  bool result = (l.get_pointed_to_type() == r.get_pointed_to_type());
   if (!result)
     if (k)
       {
@@ -14626,7 +16046,7 @@
 	  *k |= LOCAL_TYPE_CHANGE_KIND;
 	*k |= SUBTYPE_CHANGE_KIND;
       }
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Equality operator of the @ref reference_type_def type.
@@ -14794,6 +16214,7 @@
 // <array_type_def definitions>
 
 // <array_type_def::subrange_type>
+array_type_def::subrange_type::~subrange_type() = default;
 
 // <array_type_def::subrante_type::bound_value>
 
@@ -15160,7 +16581,7 @@
       if (k)
 	*k |= LOCAL_TYPE_CHANGE_KIND;
       else
-	return result;
+	ABG_RETURN(result);
     }
 
 #if 0
@@ -15178,10 +16599,10 @@
 	    *k |= SUBTYPE_CHANGE_KIND;
 	}
       else
-	return result;
+	ABG_RETURN(result);
     }
 #endif
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Equality operator.
@@ -15241,10 +16662,15 @@
 /// Build a pretty representation for an
 /// array_type_def::subrange_type.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @return a copy of the pretty representation of the current
 /// instance of typedef_decl.
@@ -15299,9 +16725,15 @@
   interned_string	internal_qualified_name_;
 
   priv(type_base_sptr t)
-    : element_type_(t) {}
+    : element_type_(t)
+  {}
+
   priv(type_base_sptr t, subranges_type subs)
-    : element_type_(t), subranges_(subs) {}
+    : element_type_(t), subranges_(subs)
+  {}
+
+  priv()
+  {}
 };
 
 /// Constructor for the type array_type_def
@@ -15332,6 +16764,62 @@
   append_subranges(subs);
 }
 
+/// Constructor for the type array_type_def
+///
+/// This constructor builds a temporary array that has no element type
+/// associated.  Later when the element type is available, it be set
+/// with the array_type_def::set_element_type() member function.
+///
+/// Note how the constructor expects a vector of subrange
+/// objects. Parsing of the array information always entails
+/// parsing the subrange info as well, thus the class subrange_type
+/// is defined inside class array_type_def and also parsed
+/// simultaneously.
+///
+/// @param env the environment of the array type.
+///
+/// @param subs a vector of the array's subranges(dimensions)
+///
+/// @param locus the source location of the array type definition.
+array_type_def::array_type_def(environment*				env,
+			       const std::vector<subrange_sptr>&	subs,
+			       const location&				locus)
+  : type_or_decl_base(env,
+		      ARRAY_TYPE
+		      | ABSTRACT_TYPE_BASE
+		      | ABSTRACT_DECL_BASE),
+    type_base(env, 0, 0),
+    decl_base(env, locus),
+    priv_(new priv)
+{
+  runtime_type_instance(this);
+  append_subranges(subs);
+}
+
+/// Update the size of the array.
+///
+/// This function computes the size of the array and sets it using
+/// type_base::set_size_in_bits().
+void
+array_type_def::update_size()
+{
+  type_base_sptr e = priv_->element_type_.lock();
+  if (e)
+    {
+      size_t s = e->get_size_in_bits();
+      if (s)
+	{
+	  for (const auto &sub : get_subranges())
+	    s *= sub->get_length();
+
+	  const environment* env = e->get_environment();
+	  ABG_ASSERT(env);
+	  set_size_in_bits(s);
+	}
+      set_alignment_in_bits(e->get_alignment_in_bits());
+    }
+}
+
 string
 array_type_def::get_subrange_representation() const
 {
@@ -15360,15 +16848,21 @@
       o << "array ("
 	<< a.get_subrange_representation()
 	<< ") of "
-	<<  e_type->get_pretty_representation(internal);
+	<<  e_type ? e_type->get_pretty_representation(internal):string("void");
     }
   else
     {
       if (internal)
-	r = get_type_name(e_type, /*qualified=*/true, /*internal=*/true)
+	r = (e_type
+	     ? get_type_name(e_type,
+			     /*qualified=*/true,
+			     /*internal=*/true)
+	     : string("void"))
 	  + a.get_subrange_representation();
       else
-	r = get_type_name(e_type, /*qualified=*/false, /*internal=*/false)
+	r = (e_type
+	     ? get_type_name(e_type, /*qualified=*/false, /*internal=*/false)
+	     : string("void"))
 	  + a.get_subrange_representation();
     }
 
@@ -15378,10 +16872,21 @@
 /// Get the pretty representation of the current instance of @ref
 /// array_type_def.
 ///
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 /// @param internal set to true if the call is intended for an
 /// internal use (for technical use inside the library itself), false
 /// otherwise.  If you don't know what this is for, then set it to
 /// false.
+///
+/// @return the pretty representation of the ABI artifact.
 string
 array_type_def::get_pretty_representation(bool internal,
 					  bool /*qualified_name*/) const
@@ -15419,7 +16924,7 @@
       if (k)
 	*k |= LOCAL_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
   std::vector<array_type_def::subrange_sptr >::const_iterator i,j;
@@ -15435,21 +16940,20 @@
 	    break;
 	  }
 	else
-	  return false;
+	  ABG_RETURN_FALSE;
       }
 
   // Compare the element types modulo the typedefs they might have
-  if (peel_typedef_type(l.get_element_type())
-      != peel_typedef_type(r.get_element_type()))
+  if (l.get_element_type() != r.get_element_type())
     {
       result = false;
       if (k)
 	*k |= SUBTYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Test if two variables are equals modulo CV qualifiers.
@@ -15467,7 +16971,7 @@
     return true;
 
   if (!l || !r)
-    return false;
+    ABG_RETURN_FALSE;
 
   l = is_array_type(peel_qualified_or_typedef_type(l));
   r = is_array_type(peel_qualified_or_typedef_type(r));
@@ -15476,14 +16980,14 @@
   std::vector<array_type_def::subrange_sptr > other_subs = r->get_subranges();
 
   if (this_subs.size() != other_subs.size())
-    return false;
+    ABG_RETURN_FALSE;
 
   std::vector<array_type_def::subrange_sptr >::const_iterator i,j;
   for (i = this_subs.begin(), j = other_subs.begin();
        i != this_subs.end() && j != other_subs.end();
        ++i, ++j)
     if (**i != **j)
-      return false;
+      ABG_RETURN_FALSE;
 
   type_base *first_element_type =
     peel_qualified_or_typedef_type(l->get_element_type().get());
@@ -15491,7 +16995,7 @@
     peel_qualified_or_typedef_type(r->get_element_type().get());
 
   if (*first_element_type != *second_element_type)
-    return false;
+    ABG_RETURN_FALSE;
 
   return true;
 }
@@ -15551,6 +17055,8 @@
 array_type_def::set_element_type(const type_base_sptr& element_type)
 {
   priv_->element_type_ = element_type;
+  update_size();
+  set_name(get_environment()->intern(get_pretty_representation()));
 }
 
 /// Append subranges from the vector @param subs to the current
@@ -15558,20 +17064,12 @@
 void
 array_type_def::append_subranges(const std::vector<subrange_sptr>& subs)
 {
-  size_t s = get_element_type()->get_size_in_bits();
 
-  for (std::vector<shared_ptr<subrange_type> >::const_iterator i = subs.begin();
-       i != subs.end();
-       ++i)
-    {
-      priv_->subranges_.push_back(*i);
-      s *= (*i)->get_length();
-    }
+  for (const auto &sub : subs)
+    priv_->subranges_.push_back(sub);
 
-  const environment* env = get_environment();
-  ABG_ASSERT(env);
-  set_name(env->intern(get_pretty_representation()));
-  set_size_in_bits(s);
+  update_size();
+  set_name(get_environment()->intern(get_pretty_representation()));
 }
 
 /// @return true if one of the sub-ranges of the array is infinite, or
@@ -15652,9 +17150,10 @@
 	}
       else
 	{
-	  set_qualified_name(env->intern(get_type_representation
-					 (*this, /*internal=*/false)));
-	  return decl_base::peek_qualified_name();
+	  set_temporary_qualified_name(env->intern(get_type_representation
+						   (*this,
+						    /*internal=*/false)));
+	  return decl_base::peek_temporary_qualified_name();
 	}
     }
 }
@@ -15776,10 +17275,15 @@
 /// Get the pretty representation of the current instance of @ref
 /// enum_type_decl.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @param qualified_name if true, names emitted in the pretty
 /// representation are fully qualified.
@@ -15789,8 +17293,13 @@
 enum_type_decl::get_pretty_representation(bool internal,
 					  bool qualified_name) const
 {
-  string r = "enum " + decl_base::get_pretty_representation(internal,
-							    qualified_name);
+  string r = "enum ";
+
+  if (internal && get_is_anonymous())
+    r += get_type_name(this, qualified_name, /*internal=*/true);
+  else
+    r += decl_base::get_pretty_representation(internal,
+					      qualified_name);
   return r;
 }
 
@@ -15906,6 +17415,26 @@
   return result;
 }
 
+/// Test if a given enumerator is found present in an enum.
+///
+/// This is a subroutine of the equals function for enums.
+///
+/// @param enr the enumerator to consider.
+///
+/// @param enom the enum to consider.
+///
+/// @return true iff the enumerator @p enr is present in the enum @p
+/// enom.
+static bool
+is_enumerator_present_in_enum(const enum_type_decl::enumerator &enr,
+			      const enum_type_decl &enom)
+{
+  for (const auto &e : enom.get_enumerators())
+    if (e == enr)
+      return true;
+  return false;
+}
+
 /// Compares two instances of @ref enum_type_decl.
 ///
 /// If the two intances are different, set a bitfield to give some
@@ -15935,32 +17464,7 @@
       if (k)
 	*k |= SUBTYPE_CHANGE_KIND;
       else
-	return false;
-    }
-
-  enum_type_decl::enumerators::const_iterator i, j;
-  for (i = l.get_enumerators().begin(), j = r.get_enumerators().begin();
-       i != l.get_enumerators().end() && j != r.get_enumerators().end();
-       ++i, ++j)
-    if (*i != *j)
-      {
-	result = false;
-	if (k)
-	  {
-	    *k |= LOCAL_TYPE_CHANGE_KIND;
-	    break;
-	  }
-	else
-	  return false;
-      }
-
-  if (i != l.get_enumerators().end() || j != r.get_enumerators().end())
-    {
-      result = false;
-      if (k)
-	*k |= LOCAL_TYPE_CHANGE_KIND;
-      else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
   if (!(l.decl_base::operator==(r) && l.type_base::operator==(r)))
@@ -15974,10 +17478,66 @@
 	    *k |= LOCAL_TYPE_CHANGE_KIND;
 	}
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
-  return result;
+  // Now compare the enumerators.  Note that the order of declaration
+  // of enumerators should not matter in the comparison.
+  //
+  // Also if the value of
+  // abigail::ir::environment::use_enum_binary_only_equality() is
+  // true, then enumerators are compared by considering their value
+  // only.  Their name is not taken into account.
+  //
+  // In that case, note that the two enums below are considered equal:
+  //
+  // enum foo
+  //     {
+  //       e0 = 0;
+  //       e1 = 1;
+  //       e2 = 2;
+  //     };
+  //
+  //     enum foo
+  //     {
+  //       e0 = 0;
+  //       e1 = 1;
+  //       e2 = 2;
+  //       e_added = 1;
+  //     };
+  //
+  // These two enums are considered different if
+  // environment::use_enum_binary_only_equality() return false.
+  //
+  // So enumerators comparison should accomodate these conditions.
+
+  for(const auto &e : l.get_enumerators())
+    if (!is_enumerator_present_in_enum(e, r))
+      {
+	result = false;
+	if (k)
+	  {
+	    *k |= LOCAL_TYPE_CHANGE_KIND;
+	    break;
+	  }
+	else
+	  ABG_RETURN_FALSE;
+      }
+
+  for(const auto &e : r.get_enumerators())
+    if (!is_enumerator_present_in_enum(e, l))
+      {
+	result = false;
+	if (k)
+	  {
+	    *k |= LOCAL_TYPE_CHANGE_KIND;
+	    break;
+	  }
+	else
+	  ABG_RETURN_FALSE;
+      }
+
+  ABG_RETURN(result);
 }
 
 /// Equality operator.
@@ -16074,6 +17634,9 @@
   : priv_(new priv)
 {}
 
+enum_type_decl::enumerator::~enumerator() = default;
+
+
 /// Constructor of the @ref enum_type_decl::enumerator type.
 ///
 /// @param env the environment we are operating from.
@@ -16111,15 +17674,28 @@
 }
 /// Equality operator
 ///
-/// @param other the enumerator to compare to the current instance of
-/// enum_type_decl::enumerator.
+/// When environment::use_enum_binary_only_equality() is true, this
+/// equality operator only cares about the value of the enumerator.
+/// It doesn't take the name of the enumerator into account.  This is
+/// the ABI-oriented default equality operator.
+///
+/// When the environment::use_enum_binary_only_equality() is false
+/// however, then this equality operator also takes the name of the
+/// enumerator into account as well as the value.
+///
+/// @param other the enumerator to compare to the current
+/// instance of enum_type_decl::enumerator.
 ///
 /// @return true if @p other equals the current instance of
 /// enum_type_decl::enumerator.
 bool
 enum_type_decl::enumerator::operator==(const enumerator& other) const
-{return (get_name() == other.get_name()
-	 && get_value() == other.get_value());}
+{
+  bool names_equal = true;
+  if (!get_environment()->use_enum_binary_only_equality())
+    names_equal = (get_name() == other.get_name());
+  return names_equal && (get_value() == other.get_value());
+}
 
 /// Inequality operator.
 ///
@@ -16259,6 +17835,34 @@
   runtime_type_instance(this);
 }
 
+/// Constructor of the typedef_decl type.
+///
+/// @param name the name of the typedef.
+///
+/// @param env the environment of the current typedef.
+///
+/// @param locus the source location of the typedef declaration.
+///
+/// @param mangled_name the mangled name of the typedef.
+///
+/// @param vis the visibility of the typedef type.
+typedef_decl::typedef_decl(const string& name,
+			   environment* env,
+			   const location& locus,
+			   const string& mangled_name,
+			   visibility vis)
+  : type_or_decl_base(env,
+		      TYPEDEF_TYPE
+		      | ABSTRACT_TYPE_BASE
+		      | ABSTRACT_DECL_BASE),
+    type_base(env, /*size_in_bits=*/0,
+	      /*alignment_in_bits=*/0),
+    decl_base(env, name, locus, mangled_name, vis),
+    priv_(new priv(nullptr))
+{
+  runtime_type_instance(this);
+}
+
 /// Return the size of the typedef.
 ///
 /// This function looks at the size of the underlying type and ensures
@@ -16268,6 +17872,8 @@
 size_t
 typedef_decl::get_size_in_bits() const
 {
+  if (!get_underlying_type())
+    return 0;
   size_t s = get_underlying_type()->get_size_in_bits();
   if (s != type_base::get_size_in_bits())
     const_cast<typedef_decl*>(this)->set_size_in_bits(s);
@@ -16283,7 +17889,9 @@
 size_t
 typedef_decl::get_alignment_in_bits() const
 {
-    size_t s = get_underlying_type()->get_alignment_in_bits();
+  if (!get_underlying_type())
+    return 0;
+  size_t s = get_underlying_type()->get_alignment_in_bits();
   if (s != type_base::get_alignment_in_bits())
     const_cast<typedef_decl*>(this)->set_alignment_in_bits(s);
   return type_base::get_alignment_in_bits();
@@ -16312,20 +17920,15 @@
 equals(const typedef_decl& l, const typedef_decl& r, change_kind* k)
 {
   bool result = true;
-  // Compare the properties of the 'is-a-member-decl" relation of this
-  // decl.  For typedefs of a C program, this always return true as
-  // there is no "member typedef type" in C.
-  //
-  // In other words, in C, Only the underlying types of typedefs are
-  // compared.  In C++ however, the properties of the
-  // 'is-a-member-decl' relation of the typedef are compared.
-  if (!maybe_compare_as_member_decls(l, r, k))
+  if (!equals(static_cast<const decl_base&>(l),
+	      static_cast<const decl_base&>(r),
+	      k))
     {
       result = false;
       if (k)
 	*k |= LOCAL_NON_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
   if (*l.get_underlying_type() != *r.get_underlying_type())
@@ -16336,10 +17939,10 @@
       if (k)
 	*k |= LOCAL_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Equality operator
@@ -16371,11 +17974,16 @@
 
 /// Build a pretty representation for a typedef_decl.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
 ///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
+
 /// @param qualified_name if true, names emitted in the pretty
 /// representation are fully qualified.
 ///
@@ -16407,7 +18015,11 @@
 /// @param t the new underlying type of the typedef.
 void
 typedef_decl::set_underlying_type(const type_base_sptr& t)
-{priv_->underlying_type_ = t;}
+{
+  priv_->underlying_type_ = t;
+  set_size_in_bits(t->get_size_in_bits());
+  set_alignment_in_bits(t->get_alignment_in_bits());
+}
 
 /// This implements the ir_traversable_base::traverse pure virtual
 /// function.
@@ -16465,11 +18077,11 @@
   {}
 }; // end struct var_decl::priv
 
-/// Constructor
+/// Constructor of the @ref var_decl type.
 ///
 /// @param name the name of the variable declaration
 ///
-/// @param name the type of the variable declaration
+/// @param type the type of the variable declaration
 ///
 /// @param locus the source location where the variable was defined.
 ///
@@ -16630,13 +18242,13 @@
       if (k)
 	{
 	  if (!types_have_similar_structure(l.get_naked_type(),
-					   r.get_naked_type()))
+					    r.get_naked_type()))
 	    *k |= (LOCAL_TYPE_CHANGE_KIND);
 	  else
 	    *k |= SUBTYPE_CHANGE_KIND;
 	}
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
   // If there are underlying elf symbols for these variables,
@@ -16648,7 +18260,7 @@
       if (k)
 	*k |= LOCAL_NON_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
   else if (s0 && s0 != s1)
     {
@@ -16656,7 +18268,7 @@
       if (k)
 	*k |= LOCAL_NON_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
   bool symbols_are_equal = (s0 && s1 && result);
 
@@ -16665,12 +18277,13 @@
       // The variables have underlying elf symbols that are equal, so
       // now, let's compare the decl_base part of the variables w/o
       // considering their decl names.
-      const interned_string &n1 = l.get_name(), &n2 = r.get_name();
-      const_cast<var_decl&>(l).set_name("");
-      const_cast<var_decl&>(r).set_name("");
+      const environment* env = l.get_environment();
+      const interned_string n1 = l.get_qualified_name(), n2 = r.get_qualified_name();
+      const_cast<var_decl&>(l).set_qualified_name(env->intern(""));
+      const_cast<var_decl&>(r).set_qualified_name(env->intern(""));
       bool decl_bases_different = !l.decl_base::operator==(r);
-      const_cast<var_decl&>(l).set_name(n1);
-      const_cast<var_decl&>(r).set_name(n2);
+      const_cast<var_decl&>(l).set_qualified_name(n1);
+      const_cast<var_decl&>(r).set_qualified_name(n2);
 
       if (decl_bases_different)
 	{
@@ -16678,7 +18291,7 @@
 	  if (k)
 	    *k |= LOCAL_NON_TYPE_CHANGE_KIND;
 	  else
-	    return false;
+	    ABG_RETURN_FALSE;
 	}
     }
   else
@@ -16688,7 +18301,7 @@
 	if (k)
 	  *k |= LOCAL_NON_TYPE_CHANGE_KIND;
 	else
-	  return false;
+	  ABG_RETURN_FALSE;
       }
 
   const dm_context_rel* c0 =
@@ -16703,10 +18316,10 @@
       if (k)
 	*k |= LOCAL_NON_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Comparison operator of @ref var_decl.
@@ -16800,15 +18413,20 @@
       set_qualified_name(get_environment()->intern(r));
     }
 
-    return decl_base::get_qualified_name(internal);
+  return decl_base::get_qualified_name(internal);
 }
 
 /// Build and return the pretty representation of this variable.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @param qualified_name if true, names emitted in the pretty
 /// representation are fully qualified.
@@ -16837,8 +18455,11 @@
       else
 	name = get_qualified_name(internal);
 
-      result +=
-	get_type_declaration(t->get_element_type())->get_qualified_name(internal)
+      type_base_sptr et = t->get_element_type();
+      ABG_ASSERT(et);
+      decl_base_sptr decl = get_type_declaration(et);
+      ABG_ASSERT(decl);
+      result += decl->get_qualified_name(internal)
 	+ " " + name + t->get_subrange_representation();
     }
   else
@@ -16905,7 +18526,11 @@
 {
   string name;
   if (is_anonymous_data_member(this))
-    name = get_pretty_representation(true, qualified);
+    // This function is used in the comparison engine to determine
+    // which anonymous data member was deleted.  So it's not involved
+    // in type comparison or canonicalization.  We don't want to use
+    // the 'internal' version of the pretty presentation.
+    name = get_pretty_representation(/*internal=*/false, qualified);
   else
     name = get_name();
 
@@ -16949,6 +18574,7 @@
   type_base_wptr return_type_;
   interned_string cached_name_;
   interned_string internal_cached_name_;
+  interned_string temp_internal_cached_name_;
 
   priv()
   {}
@@ -17228,29 +18854,18 @@
 ///
 ///@return true if lhs == rhs, false otherwise.
 bool
-equals(const function_type& lhs,
-       const function_type& rhs,
+equals(const function_type& l,
+       const function_type& r,
        change_kind* k)
 {
-#define RETURN(value)				\
-  do {						\
-    lhs.priv_->unmark_as_being_compared(lhs);	\
-    lhs.priv_->unmark_as_being_compared(rhs);	\
-    if (value == true)				\
-      maybe_propagate_canonical_type(lhs, rhs); \
-    return value;				\
-  } while(0)
+#define RETURN(value) return return_comparison_result(l, r, value)
 
-  if (lhs.priv_->comparison_started(lhs)
-      || lhs.priv_->comparison_started(rhs))
-    return true;
-
-  lhs.priv_->mark_as_being_compared(lhs);
-  lhs.priv_->mark_as_being_compared(rhs);
+  RETURN_TRUE_IF_COMPARISON_CYCLE_DETECTED(l, r);
+  mark_types_as_being_compared(l, r);
 
   bool result = true;
 
-  if (!lhs.type_base::operator==(rhs))
+  if (!l.type_base::operator==(r))
     {
       result = false;
       if (k)
@@ -17259,16 +18874,16 @@
 	RETURN(result);
     }
 
-  class_or_union* lhs_class = 0, *rhs_class = 0;
-  if (const method_type* m = dynamic_cast<const method_type*>(&lhs))
-    lhs_class = m->get_class_type().get();
+  class_or_union* l_class = 0, *r_class = 0;
+  if (const method_type* m = dynamic_cast<const method_type*>(&l))
+    l_class = m->get_class_type().get();
 
-  if (const method_type* m = dynamic_cast<const method_type*>(&rhs))
-    rhs_class = m->get_class_type().get();
+  if (const method_type* m = dynamic_cast<const method_type*>(&r))
+    r_class = m->get_class_type().get();
 
   // Compare the names of the class of the method
 
-  if (!!lhs_class != !!rhs_class)
+  if (!!l_class != !!r_class)
     {
       result = false;
       if (k)
@@ -17276,9 +18891,9 @@
       else
 	RETURN(result);
     }
-  else if (lhs_class
-	   && (lhs_class->get_qualified_name()
-	       != rhs_class->get_qualified_name()))
+  else if (l_class
+	   && (l_class->get_qualified_name()
+	       != r_class->get_qualified_name()))
     {
       result = false;
       if (k)
@@ -17291,32 +18906,32 @@
   // that is the same as the method class name; we can recurse for
   // ever in that case.
 
-  decl_base* lhs_return_type_decl =
-    get_type_declaration(lhs.get_return_type()).get();
-  decl_base* rhs_return_type_decl =
-    get_type_declaration(rhs.get_return_type()).get();
+  decl_base* l_return_type_decl =
+    get_type_declaration(l.get_return_type()).get();
+  decl_base* r_return_type_decl =
+    get_type_declaration(r.get_return_type()).get();
   bool compare_result_types = true;
-  string lhs_rt_name = lhs_return_type_decl
-    ? lhs_return_type_decl->get_qualified_name()
+  string l_rt_name = l_return_type_decl
+    ? l_return_type_decl->get_qualified_name()
     : string();
-  string rhs_rt_name = rhs_return_type_decl
-    ? rhs_return_type_decl->get_qualified_name()
+  string r_rt_name = r_return_type_decl
+    ? r_return_type_decl->get_qualified_name()
     : string();
 
-  if ((lhs_class && (lhs_class->get_qualified_name() == lhs_rt_name))
+  if ((l_class && (l_class->get_qualified_name() == l_rt_name))
       ||
-      (rhs_class && (rhs_class->get_qualified_name() == rhs_rt_name)))
+      (r_class && (r_class->get_qualified_name() == r_rt_name)))
     compare_result_types = false;
 
   if (compare_result_types)
     {
-      if (lhs.get_return_type() != rhs.get_return_type())
+      if (l.get_return_type() != r.get_return_type())
 	{
 	  result = false;
 	  if (k)
 	    {
-	      if (!types_have_similar_structure(lhs.get_return_type(),
-						rhs.get_return_type()))
+	      if (!types_have_similar_structure(l.get_return_type(),
+						r.get_return_type()))
 		*k |= LOCAL_TYPE_CHANGE_KIND;
 	      else
 		*k |= SUBTYPE_CHANGE_KIND;
@@ -17326,7 +18941,7 @@
 	}
     }
   else
-    if (lhs_rt_name != rhs_rt_name)
+    if (l_rt_name != r_rt_name)
       {
 	result = false;
 	if (k)
@@ -17336,8 +18951,8 @@
       }
 
   vector<shared_ptr<function_decl::parameter> >::const_iterator i,j;
-  for (i = lhs.get_first_parm(), j = rhs.get_first_parm();
-       i != lhs.get_parameters().end() && j != rhs.get_parameters().end();
+  for (i = l.get_first_parm(), j = r.get_first_parm();
+       i != l.get_parameters().end() && j != r.get_parameters().end();
        ++i, ++j)
     {
       if (**i != **j)
@@ -17356,8 +18971,8 @@
 	}
     }
 
-  if ((i != lhs.get_parameters().end()
-       || j != rhs.get_parameters().end()))
+  if ((i != l.get_parameters().end()
+       || j != r.get_parameters().end()))
     {
       result = false;
       if (k)
@@ -17423,16 +19038,37 @@
 {
   if (internal)
     {
-      if (!get_naked_canonical_type() || priv_->internal_cached_name_.empty())
-	priv_->internal_cached_name_ = get_function_type_name(this, internal);
-
-      return priv_->internal_cached_name_;
+      if (get_naked_canonical_type())
+	{
+	  if (priv_->internal_cached_name_.empty())
+	    priv_->internal_cached_name_ =
+	      get_function_type_name(this, /*internal=*/true);
+	  return priv_->internal_cached_name_;
+	}
+      else
+	{
+	  priv_->temp_internal_cached_name_ =
+	    get_function_type_name(this,
+				   /*internal=*/true);
+	  return priv_->temp_internal_cached_name_;
+	}
     }
-
-  if (!get_naked_canonical_type() || priv_->cached_name_.empty())
-    priv_->cached_name_ = get_function_type_name(this, internal);
-
-  return priv_->cached_name_;
+  else
+    {
+      if (get_naked_canonical_type())
+	{
+	  if (priv_->cached_name_.empty())
+	    priv_->cached_name_ =
+	      get_function_type_name(this, /*internal=*/false);
+	  return priv_->cached_name_;
+	}
+      else
+	{
+	  priv_->cached_name_ =
+	    get_function_type_name(this, /*internal=*/false);
+	  return priv_->cached_name_;
+	}
+    }
 }
 
 /// Equality operator for function_type.
@@ -17452,10 +19088,15 @@
 /// Return a copy of the pretty representation of the current @ref
 /// function_type.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @return a copy of the pretty representation of the current @ref
 /// function_type.
@@ -17675,10 +19316,15 @@
 /// Return a copy of the pretty representation of the current @ref
 /// method_type.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @return a copy of the pretty representation of the current @ref
 /// method_type.
@@ -17745,6 +19391,21 @@
   {}
 }; // end sruct function_decl::priv
 
+/// Constructor of the @ref function_decl.
+///
+/// @param name the name of the function.
+///
+/// @param function_type the type of the function.
+///
+/// @param declared_inline wether the function is declared inline.
+///
+/// @param locus the source location of the function.
+///
+/// @param mangled_name the linkage name of the function.
+///
+/// @param vis the visibility of the function.
+///
+/// @param bind the binding of the function.
 function_decl::function_decl(const string& name,
 			     function_type_sptr function_type,
 			     bool declared_inline,
@@ -17802,10 +19463,15 @@
 
 /// Get the pretty representation of the current instance of @ref function_decl.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @return the pretty representation for a function.
 string
@@ -17846,10 +19512,15 @@
 /// return type and the other specifiers of the beginning of the
 /// function's declaration ar omitted.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @return the pretty representation for the part of the function
 /// declaration that starts at the declarator.
@@ -18109,7 +19780,7 @@
 	    *k |= SUBTYPE_CHANGE_KIND;
 	}
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
   const elf_symbol_sptr &s0 = l.get_symbol(), &s1 = r.get_symbol();
@@ -18119,7 +19790,7 @@
       if (k)
 	*k |= LOCAL_NON_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
   else if (s0 && s0 != s1)
     {
@@ -18129,7 +19800,7 @@
 	  if (k)
 	    *k |= LOCAL_NON_TYPE_CHANGE_KIND;
 	  else
-	    return false;
+	    ABG_RETURN_FALSE;
 	}
     }
   bool symbols_are_equal = (s0 && s1 && result);
@@ -18159,7 +19830,7 @@
 	  if (k)
 	    *k |= LOCAL_NON_TYPE_CHANGE_KIND;
 	  else
-	    return false;
+	    ABG_RETURN_FALSE;
 	}
     }
   else
@@ -18169,7 +19840,7 @@
 	if (k)
 	  *k |= LOCAL_NON_TYPE_CHANGE_KIND;
 	else
-	  return false;
+	  ABG_RETURN_FALSE;
       }
 
   // Compare the remaining properties
@@ -18180,7 +19851,7 @@
       if (k)
 	*k |= LOCAL_NON_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
   if (is_member_function(l) != is_member_function(r))
@@ -18189,7 +19860,7 @@
       if (k)
 	  *k |= LOCAL_NON_TYPE_CHANGE_KIND;
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
   if (is_member_function(l) && is_member_function(r))
@@ -18211,11 +19882,11 @@
 	  if (k)
 	    *k |= LOCAL_NON_TYPE_CHANGE_KIND;
 	  else
-	    return false;
+	    ABG_RETURN_FALSE;
 	}
     }
 
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Comparison operator for @ref function_decl.
@@ -18451,6 +20122,8 @@
   runtime_type_instance(this);
 }
 
+function_decl::parameter::~parameter() = default;
+
 const type_base_sptr
 function_decl::parameter::get_type()const
 {return priv_->type_.lock();}
@@ -18560,14 +20233,11 @@
 	    *k |= LOCAL_TYPE_CHANGE_KIND;
 	}
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
-
-  // Sometimes, function parameters can be wrapped into a no-op
-  // qualifier.  Let's strip that qualifier out.
-  type_base_sptr l_type = look_through_no_op_qualified_type(l.get_type());
-  type_base_sptr r_type = look_through_no_op_qualified_type(r.get_type());
+  type_base_sptr l_type = l.get_type();
+  type_base_sptr r_type = r.get_type();
   if (l_type != r_type)
     {
       result = false;
@@ -18579,10 +20249,10 @@
 	    *k |= SUBTYPE_CHANGE_KIND;
 	}
       else
-	return false;
+	ABG_RETURN_FALSE;
     }
 
-  return result;
+  ABG_RETURN(result);
 }
 
 bool
@@ -18679,10 +20349,15 @@
 /// Compute and return a copy of the pretty representation of the
 /// current function parameter.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @return a copy of the textual representation of the current
 /// function parameter.
@@ -18714,145 +20389,6 @@
 // </function_decl::parameter definitions>
 
 // <class_or_union definitions>
-struct class_or_union::priv
-{
-  typedef_decl_wptr		naming_typedef_;
-  member_types			member_types_;
-  data_members			data_members_;
-  data_members			non_static_data_members_;
-  member_functions		member_functions_;
-  // A map that associates a linkage name to a member function.
-  string_mem_fn_sptr_map_type	mem_fns_map_;
-  // A map that associates function signature strings to member
-  // function.
-  string_mem_fn_ptr_map_type	signature_2_mem_fn_map_;
-  member_function_templates	member_function_templates_;
-  member_class_templates	member_class_templates_;
-
-  priv()
-  {}
-
-  priv(class_or_union::member_types& mbr_types,
-       class_or_union::data_members& data_mbrs,
-       class_or_union::member_functions& mbr_fns)
-    : member_types_(mbr_types),
-      data_members_(data_mbrs),
-      member_functions_(mbr_fns)
-  {
-    for (data_members::const_iterator i = data_members_.begin();
-	 i != data_members_.end();
-	 ++i)
-      if (!get_member_is_static(*i))
-	non_static_data_members_.push_back(*i);
-  }
-
-  /// Mark a class or union or union as being currently compared using
-  /// the class_or_union== operator.
-  ///
-  /// Note that is marking business is to avoid infinite loop when
-  /// comparing a class or union or union. If via the comparison of a
-  /// data member or a member function a recursive re-comparison of
-  /// the class or union is attempted, the marking business help to
-  /// detect that infinite loop possibility and avoid it.
-  ///
-  /// @param klass the class or union or union to mark as being
-  /// currently compared.
-  void
-  mark_as_being_compared(const class_or_union& klass) const
-  {
-    const environment* env = klass.get_environment();
-    ABG_ASSERT(env);
-    env->priv_->classes_being_compared_.insert(&klass);
-  }
-
-  /// Mark a class or union as being currently compared using the
-  /// class_or_union== operator.
-  ///
-  /// Note that is marking business is to avoid infinite loop when
-  /// comparing a class or union. If via the comparison of a data
-  /// member or a member function a recursive re-comparison of the
-  /// class or union is attempted, the marking business help to detect
-  /// that infinite loop possibility and avoid it.
-  ///
-  /// @param klass the class or union to mark as being currently
-  /// compared.
-  void
-  mark_as_being_compared(const class_or_union* klass) const
-  {mark_as_being_compared(*klass);}
-
-  /// Mark a class or union as being currently compared using the
-  /// class_or_union== operator.
-  ///
-  /// Note that is marking business is to avoid infinite loop when
-  /// comparing a class or union. If via the comparison of a data
-  /// member or a member function a recursive re-comparison of the
-  /// class or union is attempted, the marking business help to detect
-  /// that infinite loop possibility and avoid it.
-  ///
-  /// @param klass the class or union to mark as being currently
-  /// compared.
-  void
-  mark_as_being_compared(const class_or_union_sptr& klass) const
-  {mark_as_being_compared(*klass);}
-
-  /// If the instance of class_or_union has been previously marked as
-  /// being compared -- via an invocation of mark_as_being_compared()
-  /// this method unmarks it.  Otherwise is has no effect.
-  ///
-  /// This method is not thread safe because it uses the static data
-  /// member classes_being_compared_.  If you wish to use it in a
-  /// multi-threaded environment you should probably protect the
-  /// access to that static data member with a mutex or somesuch.
-  ///
-  /// @param klass the instance of class_or_union to unmark.
-  void
-  unmark_as_being_compared(const class_or_union& klass) const
-  {
-    const environment* env = klass.get_environment();
-    ABG_ASSERT(env);
-    env->priv_->classes_being_compared_.erase(&klass);
-  }
-
-  /// If the instance of class_or_union has been previously marked as
-  /// being compared -- via an invocation of mark_as_being_compared()
-  /// this method unmarks it.  Otherwise is has no effect.
-  ///
-  /// @param klass the instance of class_or_union to unmark.
-  void
-  unmark_as_being_compared(const class_or_union* klass) const
-  {
-    if (klass)
-      return unmark_as_being_compared(*klass);
-  }
-
-  /// Test if a given instance of class_or_union is being currently
-  /// compared.
-  ///
-  ///@param klass the class or union to test.
-  ///
-  /// @return true if @p klass is being compared, false otherwise.
-  bool
-  comparison_started(const class_or_union& klass) const
-  {
-    const environment* env = klass.get_environment();
-    ABG_ASSERT(env);
-    return env->priv_->classes_being_compared_.count(&klass);
-  }
-
-  /// Test if a given instance of class_or_union is being currently
-  /// compared.
-  ///
-  ///@param klass the class or union to test.
-  ///
-  /// @return true if @p klass is being compared, false otherwise.
-  bool
-  comparison_started(const class_or_union* klass) const
-  {
-    if (klass)
-      return comparison_started(*klass);
-    return false;
-  }
-}; // end struct class_or_union::priv
 
 /// A Constructor for instances of @ref class_or_union
 ///
@@ -19237,37 +20773,6 @@
   return type_base::get_size_in_bits();
 }
 
-
-/// Getter for the naming typedef of the current class.
-///
-/// Consider the C idiom:
-///
-///    typedef struct {int member;} foo_type;
-///
-/// In that idiom, foo_type is the naming typedef of the anonymous
-/// struct that is declared.
-///
-/// @return the naming typedef, if any.  Otherwise, returns nil.
-typedef_decl_sptr
-class_or_union::get_naming_typedef() const
-{return priv_->naming_typedef_.lock();}
-
-/// Set the naming typedef of the current instance of @ref class_decl.
-///
-/// Consider the C idiom:
-///
-///    typedef struct {int member;} foo_type;
-///
-/// In that idiom, foo_type is the naming typedef of the anonymous
-/// struct that is declared.
-///
-/// @param typedef_type the new naming typedef.
-void
-class_or_union::set_naming_typedef(const typedef_decl_sptr& typedef_type)
-{
-  priv_->naming_typedef_ = typedef_type;
-}
-
 /// Get the member types of this @ref class_or_union.
 ///
 /// @return a vector of the member types of this ref class_or_union.
@@ -19460,8 +20965,8 @@
        ++it)
     {
       if (is_anonymous_data_member(*it))
-	if ((*it)->get_pretty_representation(true, true)
-	    == v->get_pretty_representation(true, true))
+	if ((*it)->get_pretty_representation(/*internal=*/false, true)
+	    == v->get_pretty_representation(/*internal=*/false, true))
 	  return *it;
     }
 
@@ -19788,12 +21293,7 @@
 bool
 equals(const class_or_union& l, const class_or_union& r, change_kind* k)
 {
-#define RETURN(value)				\
-  do {						\
-    l.priv_->unmark_as_being_compared(l);	\
-    l.priv_->unmark_as_being_compared(r);	\
-    return value;				\
-  } while(0)
+#define RETURN(value) return return_comparison_result(l, r, value);
 
   // if one of the classes is declaration-only, look through it to
   // get its definition.
@@ -19822,9 +21322,11 @@
 	    // change.
 	    return true;
 
-	  if (l.get_environment()->decl_only_class_equals_definition()
-	      && !l.get_is_anonymous()
-	      && !r.get_is_anonymous())
+	  if ((l.get_environment()->decl_only_class_equals_definition()
+	       || ((odr_is_relevant(l) && !def1)
+		   || (odr_is_relevant(r) && !def2)))
+	      && !is_anonymous_or_typedef_named(l)
+	      && !is_anonymous_or_typedef_named(r))
 	    {
 	      const interned_string& q1 = l.get_scoped_name();
 	      const interned_string& q2 = r.get_scoped_name();
@@ -19846,7 +21348,7 @@
 		  // we haven't marked l or r as being compared yet, and
 		  // doing so has a peformance cost that shows up on
 		  // performance profiles for *big* libraries.
-		  return false;
+		  ABG_RETURN_FALSE;
 		}
 	    }
 	  else // A decl-only class is considered different from a
@@ -19856,7 +21358,7 @@
 		{
 		  if (k)
 		    *k |= LOCAL_TYPE_CHANGE_KIND;
-		  return false;
+		  ABG_RETURN_FALSE;
 		}
 
 	      // both definitions are empty
@@ -19865,19 +21367,16 @@
 		{
 		  if (k)
 		    *k |= LOCAL_TYPE_CHANGE_KIND;
-		  return false;
+		  ABG_RETURN_FALSE;
 		}
 
 	      return true;
 	    }
 	}
 
-      if (l.priv_->comparison_started(l)
-	  || l.priv_->comparison_started(r))
-	return true;
+      RETURN_TRUE_IF_COMPARISON_CYCLE_DETECTED(l, r);
 
-      l.priv_->mark_as_being_compared(l);
-      l.priv_->mark_as_being_compared(r);
+      mark_types_as_being_compared(l, r);
 
       bool val = *def1 == *def2;
       if (!val)
@@ -19892,18 +21391,15 @@
     {
       if (k)
 	*k |= LOCAL_TYPE_CHANGE_KIND;
-      return false;
+      ABG_RETURN_FALSE;
     }
 
   if (types_defined_same_linux_kernel_corpus_public(l, r))
     return true;
 
-  if (l.priv_->comparison_started(l)
-      || l.priv_->comparison_started(r))
-    return true;
+  RETURN_TRUE_IF_COMPARISON_CYCLE_DETECTED(l, r);
 
-  l.priv_->mark_as_being_compared(l);
-  l.priv_->mark_as_being_compared(r);
+  mark_types_as_being_compared(l, r);
 
   bool result = true;
 
@@ -20085,39 +21581,11 @@
 
 // </class_or_union definitions>
 
-/// Test if two @ref class_decl or @ref function_type are already
-/// being compared.
-///
-/// @param lhs_type the first type that would be involved in a
-/// potential comparison.
-///
-/// @param rhs_type the second type that would involved in a potential
-/// comparison.
-///
-/// @return true iff @p lhs_type and @p rhs_type are being compared.
-static bool
-types_are_being_compared(const type_base& lhs_type,
-			 const type_base& rhs_type)
-{
-  type_base *l = &const_cast<type_base&>(lhs_type);
-  type_base *r = &const_cast<type_base&>(rhs_type);
-
-  if (class_or_union *l_cou = is_class_or_union_type(l))
-    if (class_or_union *r_cou = is_class_or_union_type(r))
-      return (l_cou->priv_->comparison_started(*l_cou)
-	      || l_cou->priv_->comparison_started(*r_cou));
-
-  if (function_type *l_fn_type = is_function_type(l))
-    if (function_type *r_fn_type = is_function_type(r))
-      return (l_fn_type->priv_->comparison_started(*l_fn_type)
-	      || l_fn_type->priv_->comparison_started(*r_fn_type));
-
-  return false;
-}
-
 /// @defgroup OnTheFlyCanonicalization On-the-fly Canonicalization
 /// @{
 ///
+/// This optimization is also known as "canonical type propagation".
+/// 
 /// During the canonicalization of a type T (which doesn't yet have a
 /// canonical type), T is compared structurally (member-wise) against
 /// a type C which already has a canonical type.  The comparison
@@ -20138,6 +21606,70 @@
 /// For now this on-the-fly canonicalization only happens when
 /// comparing @ref class_decl and @ref function_type.
 ///
+/// Note however that there is a case when a type is *NOT* eligible to
+/// this canonical type propagation optimization.
+///
+/// The reason why a type is deemed NON-eligible to the canonical type
+/// propagation optimization is that it "depends" on recursively
+/// present type.  Let me explain.
+///
+/// Suppose we have a type T that has sub-types named ST0 and ST1.
+/// Suppose ST1 itself has a sub-type that is T itself.  In this case,
+/// we say that T is a recursive type, because it has T (itself) as
+/// one of its sub-types:
+///
+///   T
+///   +-- ST0
+///   |
+///   +-- ST1
+///   |    +
+///   |    |
+///   |    +-- T
+///   |
+///   +-- ST2
+///
+/// ST1 is said to "depend" on T because it has T as a sub-type.  But
+/// because T is recursive, then ST1 is said to depend on a recursive
+/// type.  Notice however that ST0 does not depend on any recursive
+/// type.
+///
+/// Now suppose we are comparing T to a type T' that has the same
+/// structure with sub-types ST0', ST1' and ST2'.  During the
+/// comparison of ST1 against ST1', their sub-type T is compared
+/// against T'.  Because T (resp. T') is a recursive type that is
+/// already being compared, the comparison of T against T' (as a
+/// subtypes of ST1 and ST1') returns true, meaning they are
+/// considered equal.  This is done so that we don't enter an infinite
+/// recursion.
+///
+/// That means ST1 is also deemed equal to ST1'.  If we are in the
+/// course of the canonicalization of T' and thus if T (as well as as
+/// all of its sub-types) is already canonicalized, then the canonical
+/// type propagation optimization will make us propagate the canonical
+/// type of ST1 onto ST1'.  So the canonical type of ST1' will be
+/// equal to the canonical type of ST1 as a result of that
+/// optmization.
+///
+/// But then, later down the road, when ST2 is compared against ST2',
+/// let's suppose that we find out that they are different. Meaning
+/// that ST2 != ST2'.  This means that T != T', i.e, the
+/// canonicalization of T' failed for now.  But most importantly, it
+/// means that the propagation of the canonical type of ST1 to ST1'
+/// must now be invalidated.  Meaning, ST1' must now be considered as
+/// not having any canonical type.
+///
+/// In other words, during type canonicalization, if ST1' depends on a
+/// recursive type T', its propagated canonical type must be
+/// invalidated (set to nullptr) if T' appears to be different from T,
+/// a.k.a, the canonicalization of T' temporarily failed.
+///
+/// This means that any sub-type that depends on recursive types and
+/// that has been the target of the canonical type propagation
+/// optimization must be tracked.  If the dependant recursive type
+/// fails its canonicalization, then the sub-type being compared must
+/// have its propagated canonical type cleared.  In other words, its
+/// propagated canonical type must be cancelled.
+///
 /// @}
 
 
@@ -20148,22 +21680,17 @@
 /// @param lhs_type the type which canonical type to propagate.
 ///
 /// @param rhs_type the type which canonical type to set.
-static void
+static bool
 maybe_propagate_canonical_type(const type_base& lhs_type,
 			       const type_base& rhs_type)
 {
-
   if (const environment *env = lhs_type.get_environment())
     if (env->do_on_the_fly_canonicalization())
       if (type_base_sptr canonical_type = lhs_type.get_canonical_type())
-	if (!rhs_type.get_canonical_type()
-	    && !types_are_being_compared(lhs_type, rhs_type))
-	  {
-	    const_cast<type_base&>(rhs_type).priv_->canonical_type =
-	      canonical_type;
-	    const_cast<type_base&>(rhs_type).priv_->naked_canonical_type =
-	      canonical_type.get();
-	  }
+	if (!rhs_type.get_canonical_type())
+	  if (env->priv_->propagate_ct(lhs_type, rhs_type))
+	    return true;
+  return false;
 }
 
 // <class_decl definitions>
@@ -20514,10 +22041,15 @@
 /// Getter of the pretty representation of the current instance of
 /// @ref class_decl.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @param qualified_name if true, names emitted in the pretty
 /// representation are fully qualified.
@@ -20535,9 +22067,14 @@
   // if an anonymous class is named by a typedef, then consider that
   // it has a name, which is the typedef name.
   if (get_is_anonymous())
-    return get_class_or_union_flat_representation(this, "",
-						  /*one_line=*/true,
-						  internal);
+    {
+      if (internal)
+	return cl + get_type_name(this, qualified_name, /*internal=*/true);
+      return get_class_or_union_flat_representation(this, "",
+						    /*one_line=*/true,
+						    internal);
+
+    }
 
   string result = cl;
   if (qualified_name)
@@ -20703,6 +22240,8 @@
   runtime_type_instance(this);
 }
 
+class_decl::base_spec::~base_spec() = default;
+
 /// Compares two instances of @ref class_decl::base_spec.
 ///
 /// If the two intances are different, set a bitfield to give some
@@ -20731,7 +22270,7 @@
     {
       if (k)
 	*k |= LOCAL_TYPE_CHANGE_KIND;
-      return false;
+      ABG_RETURN_FALSE;
     }
 
   return (*l.get_base_class() == *r.get_base_class());
@@ -21317,12 +22856,41 @@
   for (class_decl::member_functions::const_iterator i = fns.begin();
        i != fns.end();
        ++i)
-    if (methods_equal_modulo_elf_symbol(*i, method))
+    // Note that the comparison must be done in this order: method ==
+    //  *i This is to keep the consistency of the comparison.  It's
+    //  important especially when doing type canonicalization.  The
+    //  already canonicalize type is the left operand, and the type
+    //  being canonicalized is the right operand.  This comes from the
+    // code in type_base::get_canonical_type_for().
+    if (methods_equal_modulo_elf_symbol(method, *i))
       return true;
 
   return false;
 }
 
+/// Cancel the canonical type that was propagated.
+///
+/// If we are in the process of comparing a type for the purpose of
+/// canonicalization, and if that type has been the target of the
+/// canonical type propagation optimization, then clear the propagated
+/// canonical type.  See @ref OnTheFlyCanonicalization for more about
+/// the canonical type  optimization
+///
+/// @param t the type to consider.
+static bool
+maybe_cancel_propagated_canonical_type(const class_or_union& t)
+{
+  const environment* env = t.get_environment();
+  if (env && env->do_on_the_fly_canonicalization())
+    if (is_type(&t)->priv_->canonical_type_propagated())
+      {
+	is_type(&t)->priv_->clear_propagated_canonical_type();
+	env->priv_->remove_from_types_with_non_confirmed_propagated_ct(&t);
+	return true;
+      }
+  return false;
+}
+
 /// Compares two instances of @ref class_decl.
 ///
 /// If the two intances are different, set a bitfield to give some
@@ -21352,9 +22920,8 @@
 		  static_cast<const class_or_union&>(r),
 		  k);
 
-  if (l.class_or_union::priv_->comparison_started(l)
-      || l.class_or_union::priv_->comparison_started(r))
-    return true;
+  RETURN_TRUE_IF_COMPARISON_CYCLE_DETECTED(static_cast<const class_or_union&>(l),
+					   static_cast<const class_or_union&>(r));
 
   bool result = true;
   if (!equals(static_cast<const class_or_union&>(l),
@@ -21366,17 +22933,19 @@
 	return result;
     }
 
-  l.class_or_union::priv_->mark_as_being_compared(l);
-  l.class_or_union::priv_->mark_as_being_compared(r);
+  mark_types_as_being_compared(static_cast<const class_or_union&>(l),
+			       static_cast<const class_or_union&>(r));
 
-#define RETURN(value)						\
-  do {								\
-    l.class_or_union::priv_->unmark_as_being_compared(l);	\
-    l.class_or_union::priv_->unmark_as_being_compared(r);	\
-    if (value == true)						\
-      maybe_propagate_canonical_type(l, r);			\
-    return value;						\
-  } while(0)
+#define RETURN(value)							 \
+  return return_comparison_result(static_cast<const class_or_union&>(l), \
+				  static_cast<const class_or_union&>(r), \
+				  value);
+
+  // If comparing the class_or_union 'part' of the type led to
+  // canonical type propagation, then cancel that because it's too
+  // early to do that at this point.  We still need to compare bases
+  // virtual members.
+  maybe_cancel_propagated_canonical_type(r);
 
   // Compare bases.
     if (l.get_base_specifiers().size() != r.get_base_specifiers().size())
@@ -22288,10 +23857,15 @@
 /// Getter of the pretty representation of the current instance of
 /// @ref union_decl.
 ///
-/// @param internal set to true if the call is intended for an
-/// internal use (for technical use inside the library itself), false
-/// otherwise.  If you don't know what this is for, then set it to
-/// false.
+/// @param internal set to true if the call is intended to get a
+/// representation of the decl (or type) for the purpose of canonical
+/// type comparison.  This is mainly used in the function
+/// type_base::get_canonical_type_for().
+///
+/// In other words if the argument for this parameter is true then the
+/// call is meant for internal use (for technical use inside the
+/// library itself), false otherwise.  If you don't know what this is
+/// for, then set it to false.
 ///
 /// @param qualified_name if true, names emitted in the pretty
 /// representation are fully qualified.
@@ -22303,9 +23877,15 @@
 {
   string repr;
   if (get_is_anonymous())
-    repr = get_class_or_union_flat_representation(this, "",
-						  /*one_line=*/true,
-						  internal);
+    {
+      if (internal)
+	repr = string("union ") +
+	  get_type_name(this, qualified_name, /*internal=*/true);
+      else
+	repr = get_class_or_union_flat_representation(this, "",
+						      /*one_line=*/true,
+						      internal);
+    }
   else
     {
       repr = "union ";
@@ -22472,9 +24052,7 @@
   bool result = equals(static_cast<const class_or_union&>(l),
 		       static_cast<const class_or_union&>(r),
 		       k);
-  if (result == true)
-    maybe_propagate_canonical_type(l, r);
-  return result;
+  ABG_RETURN(result);
 }
 
 /// Copy a method of a @ref union_decl into a new @ref
@@ -23466,8 +25044,8 @@
   type_base_sptr t1 = strip_typedef(t_v1);
   type_base_sptr t2 = strip_typedef(t_v2);
 
-  string repr1 = get_pretty_representation(t1),
-    repr2 = get_pretty_representation(t2);
+  string repr1 = get_pretty_representation(t1, /*internal=*/false),
+    repr2 = get_pretty_representation(t2, /*internal=*/false);
   return (t1 != t2 && repr1 == repr2);
 }
 
@@ -23516,7 +25094,7 @@
 	{
 	  ABG_ASSERT(v->get_type());
 	  size_t h = hash_type_or_decl(v->get_type());
-	  string repr = v->get_pretty_representation();
+	  string repr = v->get_pretty_representation(/*internal=*/true);
 	  std::hash<string> hash_string;
 	  h = hashing::combine_hashes(h, hash_string(repr));
 	  result = h;
@@ -23525,7 +25103,7 @@
 	{
 	  ABG_ASSERT(f->get_type());
 	  size_t h = hash_type_or_decl(f->get_type());
-	  string repr = f->get_pretty_representation();
+	  string repr = f->get_pretty_representation(/*internal=*/true);
 	  std::hash<string> hash_string;
 	  h = hashing::combine_hashes(h, hash_string(repr));
 	  result = h;
@@ -23593,6 +25171,70 @@
 hash_type_or_decl(const type_or_decl_base_sptr& tod)
 {return hash_type_or_decl(tod.get());}
 
+/// Test if a given type is allowed to be non canonicalized
+///
+/// This is a subroutine of hash_as_canonical_type_or_constant.
+///
+/// For now, the only types allowed to be non canonicalized in the
+/// system are decl-only class/union and the void type.
+///
+/// @return true iff @p t is a one of the only types allowed to be
+/// non-canonicalized in the system.
+bool
+is_non_canonicalized_type(const type_base *t)
+{
+  if (!t)
+    return true;
+
+  const environment* env = t->get_environment();
+  return is_declaration_only_class_or_union_type(t) || env->is_void_type(t);
+}
+
+/// For a given type, return its exemplar type.
+///
+/// For a given type, its exemplar type is either its canonical type
+/// or the canonical type of the definition type of a given
+/// declaration-only type.  If the neither of those two types exist,
+/// then the exemplar type is the given type itself.
+///
+/// @param type the input to consider.
+///
+/// @return the exemplar type.
+type_base*
+get_exemplar_type(const type_base* type)
+{
+  if (decl_base * decl = is_decl(type))
+    {
+      // Make sure we get the real definition of a decl-only type.
+      decl = look_through_decl_only(decl);
+      type = is_type(decl);
+      ABG_ASSERT(type);
+    }
+  type_base *exemplar = type->get_naked_canonical_type();
+  if (!exemplar)
+    {
+      // The type has no canonical type.  Let's be sure that it's one
+      // of those rare types that are allowed to be non canonicalized
+      // in the system.
+      exemplar = const_cast<type_base*>(type);
+      ABG_ASSERT(is_non_canonicalized_type(exemplar));
+    }
+  return exemplar;
+}
+
+/// Test if a given type is allowed to be non canonicalized
+///
+/// This is a subroutine of hash_as_canonical_type_or_constant.
+///
+/// For now, the only types allowed to be non canonicalized in the
+/// system are decl-only class/union and the void type.
+///
+/// @return true iff @p t is a one of the only types allowed to be
+/// non-canonicalized in the system.
+bool
+is_non_canonicalized_type(const type_base_sptr& t)
+{return is_non_canonicalized_type(t.get());}
+
 /// Hash a type by either returning the pointer value of its canonical
 /// type or by returning a constant if the type doesn't have a
 /// canonical type.
@@ -23632,10 +25274,10 @@
     return reinterpret_cast<size_t>(canonical_type);
 
   // If we reached this point, it means we are seeing a
-  // non-canonicalized type.  It must be a decl-only class or a
-  // function type, otherwise it means that for some weird reason, the
-  // type hasn't been canonicalized.  It should be!
-  ABG_ASSERT(is_declaration_only_class_or_union_type(t));
+  // non-canonicalized type.  It must be a decl-only class or a void
+  // type, otherwise it means that for some weird reason, the type
+  // hasn't been canonicalized.  It should be!
+  ABG_ASSERT(is_non_canonicalized_type(t));
 
   return 0xDEADBABE;
 }
@@ -23659,8 +25301,8 @@
   if (fr != sr)
     return fr < sr;
 
-  fr = f.get_pretty_representation(),
-    sr = s.get_pretty_representation();
+  fr = f.get_pretty_representation(/*internal=*/true),
+    sr = s.get_pretty_representation(/*internal=*/true);
 
   if (fr != sr)
     return fr < sr;
@@ -23706,7 +25348,43 @@
 types_have_similar_structure(const type_base_sptr& first,
 			     const type_base_sptr& second,
 			     bool indirect_type)
-{return types_have_similar_structure(first.get(), second.get(), indirect_type);}
+{
+  // This wrapper function is used during comparisons. It is called by and its
+  // wrappee calls the main equality functions, possibly resulting in a
+  // multiplication of the cost of comparison.
+
+  // This is a convenient place to add some memoisation to avoid at
+  // least some of the duplicate calls. This is safe only if pointer
+  // addresses are never reused.
+  using Arguments = std::tuple<const type_base*, const type_base*, bool>;
+
+  struct Hasher {
+    size_t operator()(const Arguments& arguments) const {
+      const auto& [first, second, indirect] = arguments;
+      size_t seed = 0;
+      std::hash<const type_base*> h;
+      combine_hash(seed, h(first));
+      combine_hash(seed, h(second));
+      combine_hash(seed, indirect);
+      return seed;
+    }
+    static void combine_hash(size_t& seed, size_t hash) {
+      seed ^= hash + 0x9e3779b97f4a7c15 + (seed << 12) + (seed >> 4);
+    }
+  };
+
+  static std::unordered_map<Arguments, abg_compat::optional<bool>, Hasher> memo;
+
+  const Arguments t{first.get(), second.get(), indirect_type};
+  const auto& [it, inserted] = memo.insert({t, {}});
+  auto& result = it->second;
+  if (inserted)
+    result = types_have_similar_structure(
+        std::get<0>(t), std::get<1>(t), std::get<2>(t));
+  else
+    ABG_ASSERT(result.has_value());
+  return *result;
+}
 
 /// Test if two types have similar structures, even though they are
 /// (or can be) different.
@@ -23970,6 +25648,8 @@
   : priv_(new priv)
 {}
 
+ir_node_visitor::~ir_node_visitor() = default;
+
 /// Set if the walker using this visitor is allowed to re-visit a type
 /// node that was previously visited or not.
 ///
diff --git a/src/abg-libxml-utils.cc b/src/abg-libxml-utils.cc
index a1acff1..b29d2a8 100644
--- a/src/abg-libxml-utils.cc
+++ b/src/abg-libxml-utils.cc
@@ -413,41 +413,5 @@
   return result;
 }
 
-/// Maybe get the next sibling element node of an XML node, or stay to the sam
-///
-/// If there is no next sibling xml element node, the function returns
-/// the initial node.
-///
-/// @param node the initial node to consider.
-///
-/// @return the next sibling node or the initial node @p node.
-static xmlNodePtr
-go_to_next_sibling_element_or_stay(xmlNodePtr node)
-{
-  xmlNodePtr n;
-  for (n = node; n; n = n->next)
-    {
-      if (n->type == XML_ELEMENT_NODE)
-	break;
-    }
-  return n ? n : node;
-}
-
-/// Get the next sibling element node of an XML node.
-///
-/// If there is no next sibling xml element node, the function returns nil.
-///
-/// @param node the XML node to consider.
-///
-/// @return the next sibling element node or nil.
-xmlNodePtr
-advance_to_next_sibling_element(xmlNodePtr node)
-{
-  xmlNodePtr n = go_to_next_sibling_element_or_stay(node->next);
-  if (n == 0 || n->type != XML_ELEMENT_NODE)
-    return 0;
-  return n;
-}
-
 }//end namespace xml
 }//end namespace abigail
diff --git a/src/abg-reader.cc b/src/abg-reader.cc
index d4295d5..93b2a5f 100644
--- a/src/abg-reader.cc
+++ b/src/abg-reader.cc
@@ -58,7 +58,19 @@
 static bool	read_is_artificial(xmlNodePtr, bool&);
 static bool	read_tracking_non_reachable_types(xmlNodePtr, bool&);
 static bool	read_is_non_reachable_type(xmlNodePtr, bool&);
-
+static bool	read_naming_typedef_id_string(xmlNodePtr, string&);
+#ifdef WITH_DEBUG_SELF_COMPARISON
+static bool	read_type_id_string(xmlNodePtr, string&);
+static bool	maybe_map_type_with_type_id(const type_base_sptr&,
+					    xmlNodePtr);
+static bool	maybe_map_type_with_type_id(const type_base_sptr&,
+					    const string&);
+#define MAYBE_MAP_TYPE_WITH_TYPE_ID(type, xml_node) \
+  maybe_map_type_with_type_id(type, xml_node)
+#else
+#define MAYBE_MAP_TYPE_WITH_TYPE_ID(type, xml_node)
+#endif
+static void	maybe_set_naming_typedef(read_context&	ctxt, xmlNodePtr, const decl_base_sptr &);
 class read_context;
 
 /// This abstracts the context in which the current ABI
@@ -108,7 +120,6 @@
   suppr::suppressions_type				m_supprs;
   bool							m_tracking_non_reachable_types;
   bool							m_drop_undefined_syms;
-  bool							m_merge_translation_units;
 
   read_context();
 
@@ -120,8 +131,7 @@
       m_corp_node(),
       m_exported_decls_builder(),
       m_tracking_non_reachable_types(),
-      m_drop_undefined_syms(),
-      m_merge_translation_units()
+      m_drop_undefined_syms()
   {}
 
   /// Getter for the flag that tells us if we are tracking types that
@@ -159,22 +169,6 @@
   drop_undefined_syms(bool f)
   {m_drop_undefined_syms = f;}
 
-  /// Getter for the flag that tells us if we are merging translation
-  /// units.
-  ///
-  /// @return true iff we are merging translation units.
-  bool
-  merge_translation_units() const
-  {return m_merge_translation_units;}
-
-  /// Setter for the flag that tells us if we are merging translation
-  /// units.
-  ///
-  /// @param f the new value of the flag.
-  void
-  merge_translation_units(bool f)
-  {m_merge_translation_units = f;}
-
   /// Getter of the path to the ABI file.
   ///
   /// @return the path to the native xml abi file.
@@ -214,10 +208,20 @@
   get_reader() const
   {return m_reader;}
 
+  /// Getter of the current XML node in the corpus element sub-tree
+  /// that needs to be processed.
+  ///
+  /// @return the current XML node in the corpus element sub-tree that
+  /// needs to be processed.
   xmlNodePtr
   get_corpus_node() const
   {return m_corp_node;}
 
+  /// Setter of the current XML node in the corpus element sub-tree
+  /// that needs to be processed.
+  ///
+  /// @param node set the current XML node in the corpus element
+  /// sub-tree that needs to be processed.
   void
   set_corpus_node(xmlNodePtr node)
   {m_corp_node = node;}
@@ -799,6 +803,75 @@
     clear_decls_stack();
   }
 
+#ifdef WITH_DEBUG_SELF_COMPARISON
+  /// Perform a debugging routine for the "self-comparison" mode.
+  ///
+  /// This is done when this command is on:
+  ///
+  ///   "abidw --debug-abidiff".
+  ///
+  /// Consider a type 't' built from an XML element from the abixml
+  /// reader and that has just been canonicalized.
+  ///
+  /// This function checks if the canonical type of 't' is the same as
+  /// the canonical type of the type which was saved into the abixml
+  /// with the same "type-id" as the one of 't'.
+  ///
+  /// Note that at abixml saving time, a debugging file was saved on
+  /// disk to record the mapping of canonical type pointers and their
+  /// type-ids.  Right before reading the abixml again, that file was
+  /// read again and the mapping was loaded in the map returned by
+  /// environment::get_type_id_canonical_type_map().
+  void
+  maybe_check_abixml_canonical_type_stability(type_base_sptr& t)
+  {
+    if (!m_env->self_comparison_debug_is_on()
+	|| m_env->get_type_id_canonical_type_map().empty())
+      return ;
+
+    if (class_decl_sptr c = is_class_type(t))
+      if (odr_is_relevant(*c) && c->get_is_declaration_only())
+	// Declaration-only classes don't have canonical types in
+	// environments where ODR is relevant (like in C++).
+	return;
+
+    // Let's get the type-id of this type as recorded in the
+    // originating abixml file.
+    string type_id =
+      m_env->get_type_id_from_pointer(reinterpret_cast<uintptr_t>(t.get()));
+
+    if (!type_id.empty())
+      {
+	// Now let's get the canonical type that initially led to the
+	// serialization of a type with this type-id, when the abixml
+	// was being serialized.
+	auto j = m_env->get_type_id_canonical_type_map().find(type_id);
+	if (j == m_env->get_type_id_canonical_type_map().end())
+	  {
+	    if (t->get_naked_canonical_type())
+	      std::cerr << "error: no type with type-id: '"
+			<< type_id
+			<< "' could be read back from the typeid file\n";
+	  }
+	else if (j->second
+		 != reinterpret_cast<uintptr_t>(t->get_canonical_type().get()))
+	  // So thecanonical type of 't' (at abixml de-serialization
+	  // time) is different from the canonical type that led to
+	  // the serialization of 't' at abixml serialization time.
+	  // Report this because it needs further debugging.
+	  std::cerr << "error: canonical type for type '"
+		    << t->get_pretty_representation(/*internal=*/false,
+						    /*qualified=*/false)
+		    << "' of type-id '" << type_id
+		    << "' changed from '" << std::hex
+		    << j->second << "' to '" << std::hex
+		    << reinterpret_cast<uintptr_t>(t->get_canonical_type().get())
+		    << std::dec
+		    << "'\n";
+	    }
+  }
+#endif
+
   /// Test if a type should be canonicalized early.  If so,
   /// canonicalize it right away.  Otherwise, schedule it for late
   /// canonicalizing; that is, schedule it so that it's going to be
@@ -840,11 +913,17 @@
 	&& !is_method_type(t)
 	&& !is_reference_type(t)
 	&& !is_pointer_type(t)
+	&& !is_array_type(t)
 	&& !is_qualified_type(t)
 	&& !is_typedef(t)
 	&& !is_enum_type(t)
 	&& !is_function_type(t))
-      canonicalize(t);
+      {
+	canonicalize(t);
+#ifdef WITH_DEBUG_SELF_COMPARISON
+	maybe_check_abixml_canonical_type_stability(t);
+#endif
+      }
     else
       {
 	// We do not want to try to canonicalize a class type that
@@ -873,7 +952,12 @@
     for (vector<type_base_sptr>::iterator i = m_types_to_canonicalize.begin();
 	 i != m_types_to_canonicalize.end();
 	 ++i)
-      canonicalize(*i);
+      {
+	canonicalize(*i);
+#ifdef WITH_DEBUG_SELF_COMPARISON
+	maybe_check_abixml_canonical_type_stability(*i);
+#endif
+      }
   }
 
   /// Test whether if a given function suppression matches a function
@@ -1063,6 +1147,11 @@
 					  string_elf_symbols_map_sptr&,
 					  string_elf_symbols_map_sptr&);
 static bool	read_location(const read_context&, xmlNodePtr, location&);
+static bool	read_artificial_location(const read_context&,
+					 xmlNodePtr, location&);
+static bool     maybe_set_artificial_location(const read_context&,
+					      xmlNodePtr,
+					      type_or_decl_base_sptr);
 static bool	read_visibility(xmlNodePtr, decl_base::visibility&);
 static bool	read_binding(xmlNodePtr, decl_base::binding&);
 static bool	read_access(xmlNodePtr, access_specifier&);
@@ -1362,7 +1451,7 @@
       ctxt.map_id_and_node(id, n);
     }
 
-  for (n = n->children; n; n = n->next)
+  for (n = xmlFirstElementChild(n); n; n = xmlNextElementSibling(n))
     walk_xml_node_to_map_type_ids(ctxt, n);
 }
 
@@ -1404,12 +1493,10 @@
       || !ctxt.get_corpus())
     walk_xml_node_to_map_type_ids(ctxt, node);
 
-  for (xmlNodePtr n = node->children; n; n = n->next)
-    {
-      if (n->type != XML_ELEMENT_NODE)
-	continue;
-      handle_element_node(ctxt, n, /*add_decl_to_scope=*/true);
-    }
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       n;
+       n = xmlNextElementSibling(n))
+    handle_element_node(ctxt, n, /*add_decl_to_scope=*/true);
 
   ctxt.pop_scope_or_abort(tu.get_global_scope());
 
@@ -1502,37 +1589,23 @@
     }
   else
     {
-      node = 0;
-      for (xmlNodePtr n = ctxt.get_corpus_node()->next; n; n = n->next)
-	{
-	  if (!n
-	      || n->type != XML_ELEMENT_NODE)
-	    continue;
-	  if (!xmlStrEqual(n->name, BAD_CAST("abi-instr")))
-	    return nil;
-	  node = n;
-	  break;
-	}
+      if (!xmlStrEqual(node->name, BAD_CAST("abi-instr")))
+	return nil;
     }
 
-  if (node == 0)
-    return nil;
-
   tu = get_or_read_and_add_translation_unit(ctxt, node);
-  // So read_translation_unit() can trigger (under the hood) reading
-  // from several translation units just because
-  // read_context::get_scope_for_node() has been called.  In that
-  // case, after that unexpected call to read_translation_unit(), the
-  // current corpus node of the context is going to point to that
-  // translation unit that has been read under the hood.  Let's set
-  // the corpus node to the one we initially called
-  // read_translation_unit() on here.
-  ctxt.set_corpus_node(node);
+
+  // We are not in the mode where the current corpus node came from a
+  // local invocation of xmlTextReaderExpand.  So let's set
+  // ctxt.get_corpus_node to the next child element node of the corpus
+  // that needs to be processed.
+  ctxt.set_corpus_node(xmlNextElementSibling(node));
+
   return tu;
 }
 
-/// Parse the input XML document containing a function symbols
-/// or a variable symbol database.
+/// Parse the input XML document that may contain function symbol and
+/// variable symbol databases.
 ///
 /// A function symbols database is an XML element named
 /// "elf-function-symbols" and a variable symbols database is an XML
@@ -1541,12 +1614,11 @@
 ///
 /// @param ctxt the read_context to use for the parsing.
 ///
-/// @param function_symbols is true if this function should look for a
-/// function symbols database, false if it should look for a variable
-/// symbols database.
+/// @param fn_symdb any resulting function symbol database object, if
+/// elf-function-symbols was present.
 ///
-/// @param symdb the resulting symbol database object.  This is set
-/// iff the function return true.
+/// @param var_symdb any resulting variable symbol database object, if
+/// elf-variable-symbols was present.
 ///
 /// @return true upon successful parsing, false otherwise.
 static bool
@@ -1558,8 +1630,6 @@
   if (!reader)
     return false;
 
-  bool found = false;
-
   if (!ctxt.get_corpus_node())
     for (;;)
       {
@@ -1586,49 +1656,35 @@
 	  return false;
 
 	if (has_fn_syms)
-	  {
-	    fn_symdb = build_elf_symbol_db(ctxt, node, true);
-	    if (fn_symdb)
-	      found = true;
-	  }
+	  fn_symdb = build_elf_symbol_db(ctxt, node, true);
 	else if (has_var_syms)
-	  {
-	    var_symdb = build_elf_symbol_db(ctxt, node, false);
-	    if (var_symdb)
-	      found = true;
-	  }
+	  var_symdb = build_elf_symbol_db(ctxt, node, false);
 
 	xmlTextReaderNext(reader.get());
       }
   else
-    for (xmlNodePtr n = ctxt.get_corpus_node()->next; n; n = n->next)
+    for (xmlNodePtr n = ctxt.get_corpus_node(); n; n = xmlNextElementSibling(n))
       {
-	if (!n || n->type != XML_ELEMENT_NODE)
-	  continue;
-
 	bool has_fn_syms = false, has_var_syms = false;
 	if (xmlStrEqual(n->name, BAD_CAST("elf-function-symbols")))
 	  has_fn_syms = true;
 	else if (xmlStrEqual(n->name, BAD_CAST("elf-variable-symbols")))
 	  has_var_syms = true;
 	else
-	  break;
-	ctxt.set_corpus_node(n);
+	  {
+	    ctxt.set_corpus_node(n);
+	    break;
+	  }
+
 	if (has_fn_syms)
-	  {
-	    fn_symdb = build_elf_symbol_db(ctxt, n, true);
-	    found = true;
-	  }
+	  fn_symdb = build_elf_symbol_db(ctxt, n, true);
 	else if (has_var_syms)
-	  {
-	    var_symdb = build_elf_symbol_db(ctxt, n, false);
-	    found = true;
-	  }
+	  var_symdb = build_elf_symbol_db(ctxt, n, false);
 	else
 	  break;
       }
 
-  return found;
+  return true;
 }
 
 /// From an "elf-needed" XML_ELEMENT node, build a vector of strings
@@ -1644,16 +1700,14 @@
 static bool
 build_needed(xmlNode* node, vector<string>& needed)
 {
-  if (!node)
-    return false;
-
   if (!node || !xmlStrEqual(node->name,BAD_CAST("elf-needed")))
     return false;
 
-  for (xmlNodePtr n = node->children; n; n = n->next)
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       n;
+       n = xmlNextElementSibling(n))
     {
-      if (n->type != XML_ELEMENT_NODE
-	  || !xmlStrEqual(n->name, BAD_CAST("dependency")))
+      if (!xmlStrEqual(n->name, BAD_CAST("dependency")))
 	continue;
 
       string name;
@@ -1684,9 +1738,9 @@
   if (!reader)
     return false;
 
-  xmlNodePtr node = 0;
+  xmlNodePtr node = ctxt.get_corpus_node();
 
-  if (ctxt.get_corpus_node() == 0)
+  if (!node)
     {
       int status = 1;
       while (status == 1
@@ -1706,23 +1760,13 @@
     }
   else
     {
-      for (xmlNodePtr n = ctxt.get_corpus_node()->next; n; n = n->next)
-	{
-	  if (!n || n->type != XML_ELEMENT_NODE)
-	    continue;
-	  if (!xmlStrEqual(n->name, BAD_CAST("elf-needed")))
-	    return false;
-	  node = n;
-	  break;
-	}
+      if (!xmlStrEqual(node->name, BAD_CAST("elf-needed")))
+	return false;
     }
 
-  bool result = false;
-  if (node)
-    {
-      result = build_needed(node, needed);
-      ctxt.set_corpus_node(node);
-    }
+  bool result = build_needed(node, needed);
+
+  ctxt.set_corpus_node(xmlNextElementSibling(node));
 
   return result;
 }
@@ -1824,6 +1868,8 @@
   if (!reader)
     return nil;
 
+  // This is to remember to call xmlTextReaderNext if we ever call
+  // xmlTextReaderExpand.
   bool call_reader_next = false;
 
   xmlNodePtr node = ctxt.get_corpus_node();
@@ -1839,16 +1885,18 @@
 				       BAD_CAST("abi-corpus")))
 	return nil;
 
-      if (!ctxt.get_corpus())
-	{
-	  corpus_sptr c(new corpus(ctxt.get_environment(), ""));
-	  ctxt.set_corpus(c);
-	}
+      ctxt.set_corpus(std::make_shared<corpus>(ctxt.get_environment(), ""));
+#ifdef WITH_DEBUG_SELF_COMPARISON
+      if (ctxt.get_environment()->self_comparison_debug_is_on())
+	ctxt.get_environment()->
+	  set_self_comparison_debug_input(ctxt.get_corpus());
+#endif
 
       if (!ctxt.get_corpus_group())
 	ctxt.clear_per_corpus_data();
 
       corpus& corp = *ctxt.get_corpus();
+      corp.set_origin(corpus::NATIVE_XML_ORIGIN);
       ctxt.set_exported_decls_builder(corp.get_exported_decls_builder().get());
 
       handle_version_attribute(reader, corp);
@@ -1897,16 +1945,19 @@
     }
   else
     {
-      if (!ctxt.get_corpus())
-	{
-	  corpus_sptr c(new corpus(ctxt.get_environment(), ""));
-	  ctxt.set_corpus(c);
-	}
+      ctxt.set_corpus(std::make_shared<corpus>(ctxt.get_environment(), ""));
+#ifdef WITH_DEBUG_SELF_COMPARISON
+      if (ctxt.get_environment()->self_comparison_debug_is_on())
+	ctxt.get_environment()->
+	  set_self_comparison_debug_input(ctxt.get_corpus());
+#endif
 
       if (!ctxt.get_corpus_group())
 	ctxt.clear_per_corpus_data();
 
       corpus& corp = *ctxt.get_corpus();
+      corp.set_origin(corpus::NATIVE_XML_ORIGIN);
+
       ctxt.set_exported_decls_builder(corp.get_exported_decls_builder().get());
 
       xml::xml_char_sptr path_str = XML_NODE_GET_ATTRIBUTE(node, "path");
@@ -1925,10 +1976,14 @@
 	corp.set_soname(reinterpret_cast<char*>(soname_str.get()));
     }
 
-  if (!node->children)
-    return nil;
-
-  ctxt.set_corpus_node(node->children);
+  // If the corpus element node has children nodes, make
+  // ctxt.get_corpus_node() returns the first child element node of
+  // the corpus element that *needs* to be processed.
+  if (node->children)
+    {
+      xmlNodePtr n = xmlFirstElementChild(node);
+      ctxt.set_corpus_node(n);
+    }
 
   corpus& corp = *ctxt.get_corpus();
 
@@ -1943,24 +1998,16 @@
   string_elf_symbols_map_sptr fn_sym_db, var_sym_db;
 
   // Read the symbol databases.
-  bool is_ok = read_symbol_db_from_input(ctxt, fn_sym_db, var_sym_db);
-  if (is_ok)
-    {
-      // Note that it's possible that both fn_sym_db and var_sym_db
-      // are nil, due to potential suppression specifications.  That's
-      // fine.
-      corp.set_symtab(symtab_reader::symtab::load(fn_sym_db, var_sym_db));
-    }
+  read_symbol_db_from_input(ctxt, fn_sym_db, var_sym_db);
+  // Note that it's possible that both fn_sym_db and var_sym_db are nil,
+  // due to potential suppression specifications.  That's fine.
+  corp.set_symtab(symtab_reader::symtab::load(fn_sym_db, var_sym_db));
 
   ctxt.get_environment()->canonicalization_is_done(false);
 
   // Read the translation units.
-  do
-    {
-      translation_unit_sptr tu = read_translation_unit_from_input(ctxt);
-      is_ok = bool(tu);
-    }
-  while (is_ok);
+  while (read_translation_unit_from_input(ctxt))
+    ;
 
   if (ctxt.tracking_non_reachable_types())
     {
@@ -1977,22 +2024,25 @@
 
   ctxt.get_environment()->canonicalization_is_done(true);
 
-  corp.set_origin(corpus::NATIVE_XML_ORIGIN);
-
   if (call_reader_next)
     {
       // This is the necessary counter-part of the xmlTextReaderExpand()
       // call at the beginning of the function.
       xmlTextReaderNext(reader.get());
+      // The call above invalidates the xml node returned by
+      // xmlTextReaderExpand, which is can still be accessed via
+      // ctxt.set_corpus_node.
+      ctxt.set_corpus_node(0);
     }
   else
     {
       node = ctxt.get_corpus_node();
-      node = xml::advance_to_next_sibling_element(node);
+      node = xmlNextElementSibling(node);
       if (!node)
 	{
 	  node = ctxt.get_corpus_node();
-	  node = xml::advance_to_next_sibling_element(node->parent);
+	  if (node)
+	    node = xmlNextElementSibling(node->parent);
 	}
       ctxt.set_corpus_node(node);
     }
@@ -2045,8 +2095,7 @@
   if (!node)
     return nil;
 
-  //node = xml::get_first_element_sibling_if_text(node->children);
-  node = xml::advance_to_next_sibling_element(node->children);
+  node = xmlFirstElementChild(node);
   ctxt.set_corpus_node(node);
 
   corpus_sptr corp;
@@ -2224,10 +2273,12 @@
     file_path = CHAR_STR(f);
 
   if (file_path.empty())
-    return false;
+    return read_artificial_location(ctxt, node, loc);
 
   if (xml_char_sptr l = xml::build_sptr(xmlGetProp(node, BAD_CAST("line"))))
     line = atoi(CHAR_STR(l));
+  else
+    return read_artificial_location(ctxt, node, loc);
 
   if (xml_char_sptr c = xml::build_sptr(xmlGetProp(node, BAD_CAST("column"))))
     column = atoi(CHAR_STR(c));
@@ -2239,6 +2290,72 @@
   return true;
 }
 
+/// Parses the artificial location attributes on an xmlNodePtr.
+///
+/// The artificial location is the line number of the xmlNode as well
+/// as the URI of the node.
+///
+///@param ctxt the current parsing context
+///
+///@param loc the resulting location.
+///
+/// @return true upon sucessful parsing, false otherwise.
+static bool
+read_artificial_location(const read_context& ctxt,
+			 xmlNodePtr node,
+			 location& loc)
+{
+  if (!node)
+    return false;
+
+   string file_path;
+   size_t line = 0, column = 0;
+
+   line = node->line;
+
+   if (node->doc)
+       file_path = reinterpret_cast<const char*>(node->doc->URL);
+
+   read_context& c = const_cast<read_context&>(ctxt);
+   loc =
+     c.get_translation_unit()->get_loc_mgr().create_new_location(file_path,
+								 line, column);
+   loc.set_is_artificial(true);
+   return true;
+}
+
+/// Set the artificial location of a xmlNode to an artifact.
+///
+/// The artificial location is the line number of the xmlNode as well
+/// as the URI of the node.
+///
+/// The function sets the artificial location only if the artifact
+/// doesn"t already have one.
+///
+///@param ctxt the current parsing context
+///
+///@param node the XML node to consider.
+///
+///@param artifact the ABI artifact.
+///
+/// @return true iff the location was set on the artifact.
+static bool
+maybe_set_artificial_location(const read_context& ctxt,
+			      xmlNodePtr node,
+			      type_or_decl_base_sptr artefact)
+{
+  if (artefact && !artefact->has_artificial_location())
+    {
+      location l;
+      if (read_artificial_location(ctxt, node, l))
+	{
+	  artefact->set_artificial_location(l);
+	  return true;
+	}
+    }
+  return false;
+}
+
 /// Parse the visibility attribute.
 ///
 /// @param node the xml node to read from.
@@ -2351,13 +2468,13 @@
   bool got_something = false;
   if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "size-in-bits"))
     {
-      size_in_bits = atoi(CHAR_STR(s));
+      size_in_bits = atoll(CHAR_STR(s));
       got_something = true;
     }
 
   if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "alignment-in-bits"))
     {
-      align_in_bits = atoi(CHAR_STR(s));
+      align_in_bits = atoll(CHAR_STR(s));
       got_something = true;
     }
   return got_something;
@@ -2564,6 +2681,26 @@
   return false;
 }
 
+/// Read the "naming-typedef-id" property from an XML node.
+///
+/// @param node the XML node to consider.
+///
+/// @param naming_typedef_id output parameter.  It's set to the
+/// content of the "naming-typedef-id" property, if it's present.
+///
+/// @return true iff the "naming-typedef-id" property exists and was
+/// read from @p node.
+static bool
+read_naming_typedef_id_string(xmlNodePtr node, string& naming_typedef_id)
+{
+  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "naming-typedef-id"))
+    {
+      naming_typedef_id = xml::unescape_xml_string(CHAR_STR(s));
+      return true;
+    }
+  return false;
+}
+
 /// Read the "is-virtual" attribute of the current xml node.
 ///
 /// @param node the xml node to read the attribute from
@@ -2694,6 +2831,114 @@
   return false;
 }
 
+#ifdef WITH_DEBUG_SELF_COMPARISON
+/// Read the value of the 'id' attribute from a given XML node.
+///
+/// @param node the XML node to consider.
+///
+/// @param type_id the string to set the 'id' to.
+///
+/// @return true iff @p type_id was successfully set.
+static bool
+read_type_id_string(xmlNodePtr node, string& type_id)
+{
+  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "id"))
+    {
+      type_id = CHAR_STR(s);
+      return true;
+    }
+  return false;
+}
+
+/// Associate a type-id string with the type that was constructed from
+/// it.
+///
+/// Note that if we are not in "self comparison debugging" mode or if
+/// the type we are looking at is not canonicalized, then this
+/// function does nothing.
+///
+/// @param t the type built from the a type XML node that has a
+/// particular type-id.
+///
+/// @param type_id the type-id of type @p t.
+///
+/// @return true if the association was performed.
+static bool
+maybe_map_type_with_type_id(const type_base_sptr& t,
+			    const string& type_id)
+{
+  if (!t)
+    return false;
+
+  environment *env = t->get_environment();
+  if (!env->self_comparison_debug_is_on()
+      || is_non_canonicalized_type(t.get()))
+    return false;
+
+  env->get_pointer_type_id_map()[reinterpret_cast<uintptr_t>(t.get())] =
+    type_id;
+
+  return true;
+}
+
+/// Associate a type-id string with the type that was constructed from
+/// it.
+///
+/// Note that if we are not in "self comparison debugging" mode or if
+/// the type we are looking at is not canonicalized, then this
+/// function does nothing.
+///
+/// @param t the type built from the a type XML node that has a
+/// particular type-id.
+///
+/// @param type_id the type-id of type @p t.
+///
+/// @return true if the association was performed.
+static bool
+maybe_map_type_with_type_id(const type_base_sptr& t,
+			    xmlNodePtr node)
+{
+  if (!t)
+    return false;
+
+  environment *env = t->get_environment();
+  if (!env->self_comparison_debug_is_on()
+      || is_non_canonicalized_type(t.get()))
+    return false;
+
+  string type_id;
+  if (!read_type_id_string(node, type_id) || type_id.empty())
+    return false;
+
+  return maybe_map_type_with_type_id(t, type_id);
+}
+
+#endif
+
+/// Set the naming typedef to a given decl depending on the content of
+/// the "naming-typedef-id" property of its descriptive XML element.
+///
+/// @param ctxt the current read context.
+///
+/// @param node the XML node to read from.
+///
+/// @param decl the decl to set the naming typedef to.
+static void
+maybe_set_naming_typedef(read_context&		ctxt,
+			 xmlNodePtr		node,
+			 const decl_base_sptr&	decl)
+{
+  string naming_typedef_id;
+  read_naming_typedef_id_string(node, naming_typedef_id);
+  if (!naming_typedef_id.empty())
+    {
+      typedef_decl_sptr naming_typedef =
+	is_typedef(ctxt.build_or_get_type_decl(naming_typedef_id, true));
+      ABG_ASSERT(naming_typedef);
+      decl->set_naming_typedef(naming_typedef);
+    }
+}
+
 /// Build a @ref namespace_decl from an XML element node which name is
 /// "namespace-decl".  Note that this function recursively reads the
 /// content of the namespace and builds the proper IR nodes
@@ -2734,15 +2979,14 @@
 
   const environment* env = ctxt.get_environment();
   namespace_decl_sptr decl(new namespace_decl(env, name, loc));
+  maybe_set_artificial_location(ctxt, node, decl);
   ctxt.push_decl_to_current_scope(decl, add_to_current_scope);
   ctxt.map_xml_node_to_decl(node, decl);
 
-  for (xmlNodePtr n = node->children; n; n = n->next)
-    {
-      if (n->type != XML_ELEMENT_NODE)
-	continue;
-      handle_element_node(ctxt, n, /*add_to_current_scope=*/true);
-    }
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       n;
+       n = xmlNextElementSibling(n))
+    handle_element_node(ctxt, n, /*add_to_current_scope=*/true);
 
   ctxt.pop_scope_or_abort(decl);
 
@@ -2837,8 +3081,7 @@
   elf_symbol_sptr e = elf_symbol::create(env, /*index=*/0,
 					 size, name, type, binding,
 					 is_defined, is_common,
-					 version, visibility,
-					 /*is_linux_string_cst=*/false);
+					 version, visibility);
 
   e->set_is_suppressed(is_suppressed);
 
@@ -2929,14 +3172,14 @@
   xml_node_ptr_elf_symbol_sptr_map_type xml_node_ptr_elf_symbol_map;
 
   elf_symbol_sptr sym;
-  for (xmlNodePtr n = node->children; n; n = n->next)
-    {
-      if ((sym = build_elf_symbol(ctxt, n, /*drop_if_suppress=*/false)))
-	{
-	  id_sym_map[sym->get_id_string()] = sym;
-	  xml_node_ptr_elf_symbol_map[n] = sym;
-	}
-    }
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       n;
+       n = xmlNextElementSibling(n))
+    if ((sym = build_elf_symbol(ctxt, n, /*drop_if_suppress=*/false)))
+      {
+	id_sym_map[sym->get_id_string()] = sym;
+	xml_node_ptr_elf_symbol_map[n] = sym;
+      }
 
   if (id_sym_map.empty())
     return nil;
@@ -3095,12 +3338,11 @@
   std::vector<function_decl::parameter_sptr> parms;
   type_base_sptr return_type = env->get_void_type();
 
-  for (xmlNodePtr n = node->children; n ; n = n->next)
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       n ;
+       n = xmlNextElementSibling(n))
     {
-      if (n->type != XML_ELEMENT_NODE)
-	continue;
-
-      else if (xmlStrEqual(n->name, BAD_CAST("parameter")))
+      if (xmlStrEqual(n->name, BAD_CAST("parameter")))
 	{
 	  if (function_decl::parameter_sptr p =
 	      build_function_parameter(ctxt, n))
@@ -3126,6 +3368,8 @@
 
   ABG_ASSERT(fn_type);
 
+  fn_type->set_is_artificial(true);
+
   function_decl_sptr fn_decl(as_method_decl
 			     ? new method_decl (name, fn_type,
 						declared_inline, loc,
@@ -3135,6 +3379,7 @@
 						 mangled_name, vis,
 						 bind));
 
+  maybe_set_artificial_location(ctxt, node, fn_decl);
   ctxt.push_decl_to_current_scope(fn_decl, add_to_current_scope);
 
   elf_symbol_sptr sym = build_elf_symbol_from_reference(ctxt, node);
@@ -3367,6 +3612,7 @@
   var_decl_sptr decl(new var_decl(name, underlying_type,
 				  locus, mangled_name,
 				  vis, bind));
+  maybe_set_artificial_location(ctxt, node, decl);
 
   elf_symbol_sptr sym = build_elf_symbol_from_reference(ctxt, node);
   if (sym)
@@ -3449,6 +3695,7 @@
   const environment* env = ctxt.get_environment();
   type_decl_sptr decl(new type_decl(env, name, size_in_bits,
 				    alignment_in_bits, loc));
+  maybe_set_artificial_location(ctxt, node, decl);
   decl->set_is_anonymous(is_anonymous);
   decl->set_is_declaration_only(is_decl_only);
   if (ctxt.push_and_key_type_decl(decl, id, add_to_current_scope))
@@ -3488,29 +3735,17 @@
       return result;
     }
 
-  string type_id;
-  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "type-id"))
-    type_id = CHAR_STR(s);
-
-  shared_ptr<type_base> underlying_type =
-    ctxt.build_or_get_type_decl(type_id, true);
-  ABG_ASSERT(underlying_type);
-
-  // maybe building the underlying type triggered building this one in
-  // the mean time ...
-  if (decl_base_sptr d = ctxt.get_decl_for_xml_node(node))
-    {
-      qualified_type_def_sptr result =
-	dynamic_pointer_cast<qualified_type_def>(d);
-      ABG_ASSERT(result);
-      return result;
-    }
-
   string id;
   if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE (node, "id"))
     id = CHAR_STR(s);
 
-  string const_str;
+  ABG_ASSERT(!id.empty());
+
+  location loc;
+  read_location(ctxt, node, loc);
+
+  qualified_type_def::CV cv = qualified_type_def::CV_NONE;
+    string const_str;
   if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "const"))
     const_str = CHAR_STR(s);
   bool const_cv = const_str == "yes";
@@ -3525,7 +3760,6 @@
     restrict_str = CHAR_STR(s);
   bool restrict_cv = restrict_str == "yes";
 
-  qualified_type_def::CV cv = qualified_type_def::CV_NONE;
   if (const_cv)
     cv = cv | qualified_type_def::CV_CONST;
   if (volatile_cv)
@@ -3533,30 +3767,31 @@
   if (restrict_cv)
     cv = cv | qualified_type_def::CV_RESTRICT;
 
-  location loc;
-  read_location(ctxt, node, loc);
+  string type_id;
+  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "type-id"))
+    type_id = CHAR_STR(s);
+  ABG_ASSERT(!type_id.empty());
 
-  ABG_ASSERT(!id.empty());
+  shared_ptr<type_base> underlying_type =
+    ctxt.build_or_get_type_decl(type_id, true);
+  ABG_ASSERT(underlying_type);
 
   qualified_type_def_sptr decl;
-
-  if (type_base_sptr d = ctxt.get_type_decl(id))
+  if (type_base_sptr t = ctxt.get_type_decl(id))
     {
-      qualified_type_def_sptr ty = is_qualified_type(d);
-      ABG_ASSERT(ty);
-      string pr1 = get_pretty_representation(ty->get_underlying_type()),
-	pr2 = get_pretty_representation(underlying_type);
-      return ty;
+      decl = is_qualified_type(t);
+      ABG_ASSERT(decl);
+    }
+  else
+    {
+      decl.reset(new qualified_type_def(underlying_type, cv, loc));
+      maybe_set_artificial_location(ctxt, node, decl);
+      ctxt.push_and_key_type_decl(decl, id, add_to_current_scope);
     }
 
-  decl.reset(new qualified_type_def(underlying_type, cv, loc));
-  if (ctxt.push_and_key_type_decl(decl, id, add_to_current_scope))
-    {
-      ctxt.map_xml_node_to_decl(node, decl);
-      return decl;
-    }
+  ctxt.map_xml_node_to_decl(node, decl);
 
-  return shared_ptr<qualified_type_def>((qualified_type_def*)0);
+  return decl;
 }
 
 /// Build a pointer_type_def from a 'pointer-type-def' xml node.
@@ -3589,55 +3824,49 @@
       return result;
     }
 
-  string type_id;
-  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "type-id"))
-    type_id = CHAR_STR(s);
-
-  shared_ptr<type_base> pointed_to_type =
-    ctxt.build_or_get_type_decl(type_id, true);
-  ABG_ASSERT(pointed_to_type);
-
-  // maybe building the underlying type triggered building this one in
-  // the mean time ...
-  if (decl_base_sptr d = ctxt.get_decl_for_xml_node(node))
-    {
-      pointer_type_def_sptr result =
-	dynamic_pointer_cast<pointer_type_def>(d);
-      ABG_ASSERT(result);
-      return result;
-    }
-
-  size_t size_in_bits = ctxt.get_translation_unit()->get_address_size();
-  size_t alignment_in_bits = 0;
-  read_size_and_alignment(node, size_in_bits, alignment_in_bits);
-
   string id;
   if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "id"))
     id = CHAR_STR(s);
   ABG_ASSERT(!id.empty());
-  if (type_base_sptr d = ctxt.get_type_decl(id))
+
+  if (type_base_sptr t = ctxt.get_type_decl(id))
     {
-      pointer_type_def_sptr ty = is_pointer_type(d);
-      ABG_ASSERT(ty);
-      ABG_ASSERT(ctxt.types_equal(pointed_to_type,
-			      ty->get_pointed_to_type()));
-      return ty;
+      pointer_type_def_sptr result = is_pointer_type(t);
+      ABG_ASSERT(result);
+      return result;
     }
 
+  string type_id;
+  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "type-id"))
+    type_id = CHAR_STR(s);
+
+  size_t size_in_bits = ctxt.get_translation_unit()->get_address_size();
+  size_t alignment_in_bits = 0;
+  read_size_and_alignment(node, size_in_bits, alignment_in_bits);
   location loc;
   read_location(ctxt, node, loc);
 
-  shared_ptr<pointer_type_def> t(new pointer_type_def(pointed_to_type,
-						      size_in_bits,
-						      alignment_in_bits,
-						      loc));
-  if (ctxt.push_and_key_type_decl(t, id, add_to_current_scope))
-    {
-      ctxt.map_xml_node_to_decl(node, t);
-      return t;
-    }
+  // Create the pointer type /before/ the pointed-to type.  After the
+  // creation, the type is 'keyed' using ctxt.push_and_key_type_decl.
+  // This means that the type can be retrieved from its type ID.  This
+  // is so that if the pointed-to type indirectly uses this pointer
+  // type (via recursion) then that is made possible.
+  pointer_type_def_sptr t(new pointer_type_def(ctxt.get_environment(),
+					       size_in_bits,
+					       alignment_in_bits,
+					       loc));
+  maybe_set_artificial_location(ctxt, node, t);
 
-  return nil;
+  if (ctxt.push_and_key_type_decl(t, id, add_to_current_scope))
+    ctxt.map_xml_node_to_decl(node, t);
+
+  type_base_sptr pointed_to_type =
+    ctxt.build_or_get_type_decl(type_id, true);
+  ABG_ASSERT(pointed_to_type);
+
+  t->set_pointed_to_type(pointed_to_type);
+
+  return t;
 }
 
 /// Build a reference_type_def from a pointer to 'reference-type-def'
@@ -3670,33 +3899,6 @@
       return result;
     }
 
-  string kind;
-  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "kind"))
-    kind = CHAR_STR(s); // this should be either "lvalue" or "rvalue".
-  bool is_lvalue = kind == "lvalue";
-
-  string type_id;
-  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "type-id"))
-    type_id = CHAR_STR(s);
-
-  shared_ptr<type_base> pointed_to_type = ctxt.build_or_get_type_decl(type_id,
-								      true);
-  ABG_ASSERT(pointed_to_type);
-
-  // maybe building the underlying type triggered building this one in
-  // the mean time ...
-  if (decl_base_sptr d = ctxt.get_decl_for_xml_node(node))
-    {
-      reference_type_def_sptr result =
-	dynamic_pointer_cast<reference_type_def>(d);
-      ABG_ASSERT(result);
-      return result;
-    }
-
-  size_t size_in_bits = ctxt.get_translation_unit()->get_address_size();
-  size_t alignment_in_bits = 0;
-  read_size_and_alignment(node, size_in_bits, alignment_in_bits);
-
   string id;
   if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "id"))
     id = CHAR_STR(s);
@@ -3706,25 +3908,44 @@
     {
       reference_type_def_sptr ty = is_reference_type(d);
       ABG_ASSERT(ty);
-      ABG_ASSERT(ctxt.types_equal(pointed_to_type, ty->get_pointed_to_type()));
       return ty;
     }
 
   location loc;
   read_location(ctxt, node, loc);
+  string kind;
+  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "kind"))
+    kind = CHAR_STR(s); // this should be either "lvalue" or "rvalue".
+  bool is_lvalue = kind == "lvalue";
 
-  shared_ptr<reference_type_def> t(new reference_type_def(pointed_to_type,
-							  is_lvalue,
-							  size_in_bits,
-							  alignment_in_bits,
-							  loc));
+  size_t size_in_bits = ctxt.get_translation_unit()->get_address_size();
+  size_t alignment_in_bits = 0;
+  read_size_and_alignment(node, size_in_bits, alignment_in_bits);
+
+  string type_id;
+  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "type-id"))
+    type_id = CHAR_STR(s);
+  ABG_ASSERT(!type_id.empty());
+
+  // Create the reference type /before/ the pointed-to type.  After
+  // the creation, the type is 'keyed' using
+  // ctxt.push_and_key_type_decl.  This means that the type can be
+  // retrieved from its type ID.  This is so that if the pointed-to
+  // type indirectly uses this reference type (via recursion) then
+  // that is made possible.
+  reference_type_def_sptr t(new reference_type_def(ctxt.get_environment(),
+						   is_lvalue, size_in_bits,
+						   alignment_in_bits, loc));
+  maybe_set_artificial_location(ctxt, node, t);
   if (ctxt.push_and_key_type_decl(t, id, add_to_current_scope))
-    {
-      ctxt.map_xml_node_to_decl(node, t);
-      return t;
-    }
+    ctxt.map_xml_node_to_decl(node, t);
 
-  return nil;
+  type_base_sptr pointed_to_type =
+    ctxt.build_or_get_type_decl(type_id,/*add_to_current_scope=*/ true);
+  ABG_ASSERT(pointed_to_type);
+  t->set_pointed_to_type(pointed_to_type);
+
+  return t;
 }
 
 /// Build a function_type from a pointer to 'function-type'
@@ -3768,12 +3989,12 @@
   std::vector<shared_ptr<function_decl::parameter> > parms;
   type_base_sptr return_type = env->get_void_type();
 
-  class_decl_sptr method_class_type;
+  class_or_union_sptr method_class_type;
   if (is_method_t)
     {
       method_class_type =
-	is_class_type(ctxt.build_or_get_type_decl(method_class_id,
-						  /*add_decl_to_scope=*/true));
+	is_class_or_union_type(ctxt.build_or_get_type_decl(method_class_id,
+							   /*add_decl_to_scope=*/true));
       ABG_ASSERT(method_class_type);
     }
 
@@ -3788,12 +4009,11 @@
   ctxt.get_translation_unit()->bind_function_type_life_time(fn_type);
   ctxt.key_type_decl(fn_type, id);
 
-  for (xmlNodePtr n = node->children; n ; n = n->next)
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       n;
+       n = xmlNextElementSibling(n))
     {
-      if (n->type != XML_ELEMENT_NODE)
-	continue;
-
-      else if (xmlStrEqual(n->name, BAD_CAST("parameter")))
+      if (xmlStrEqual(n->name, BAD_CAST("parameter")))
 	{
 	  if (function_decl::parameter_sptr p =
 	      build_function_parameter(ctxt, n))
@@ -3924,6 +4144,7 @@
     (new array_type_def::subrange_type(ctxt.get_environment(),
 				       name, min_bound, max_bound,
 				       underlying_type, loc));
+  maybe_set_artificial_location(ctxt, node, p);
   p->is_infinite(is_infinite);
 
   return p;
@@ -3959,6 +4180,18 @@
       return result;
     }
 
+  string id;
+  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "id"))
+    id = CHAR_STR(s);
+  ABG_ASSERT(!id.empty());
+
+  if (type_base_sptr d = ctxt.get_type_decl(id))
+    {
+      array_type_def_sptr ty = is_array_type(d);
+      ABG_ASSERT(ty);
+      return ty;
+    }
+
   int dimensions = 0;
   if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "dimensions"))
     dimensions = atoi(CHAR_STR(s));
@@ -3967,11 +4200,6 @@
   if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "type-id"))
     type_id = CHAR_STR(s);
 
-  // The type of array elements.
-  type_base_sptr type =
-    ctxt.build_or_get_type_decl(type_id, true);
-  ABG_ASSERT(type);
-
   // maybe building the type of array elements triggered building this
   // one in the mean time ...
   if (decl_base_sptr d = ctxt.get_decl_for_xml_node(node))
@@ -4006,47 +4234,37 @@
 	return nil;
     }
 
-  string id;
-  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "id"))
-    id = CHAR_STR(s);
-  ABG_ASSERT(!id.empty());
-
-  if (type_base_sptr d = ctxt.get_type_decl(id))
-    {
-      array_type_def_sptr ty = is_array_type(d);
-      ABG_ASSERT(ty);
-      ABG_ASSERT(*type == *ty->get_element_type());
-      ABG_ASSERT(type->get_alignment_in_bits() == alignment_in_bits);
-      return ty;
-    }
-
   location loc;
   read_location(ctxt, node, loc);
   array_type_def::subranges_type subranges;
 
-  for (xmlNodePtr n = node->children; n ; n = n->next)
-    {
-      if (n->type != XML_ELEMENT_NODE)
-	continue;
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       n;
+       n = xmlNextElementSibling(n))
+    if (xmlStrEqual(n->name, BAD_CAST("subrange")))
+      {
+	if (array_type_def::subrange_sptr s =
+	    build_subrange_type(ctxt, n))
+	  {
+	    MAYBE_MAP_TYPE_WITH_TYPE_ID(s, n);
+	    if (add_to_current_scope)
+	      {
+		add_decl_to_scope(s, ctxt.get_cur_scope());
+		ctxt.maybe_canonicalize_type(s);
+	      }
+	    subranges.push_back(s);
+	  }
+      }
 
-      else if (xmlStrEqual(n->name, BAD_CAST("subrange")))
-	{
-	  if (array_type_def::subrange_sptr s =
-	      build_subrange_type(ctxt, n))
-	    {
-	      if (add_to_current_scope)
-		{
-		  add_decl_to_scope(s, ctxt.get_cur_scope());
-		  ctxt.maybe_canonicalize_type(s);
-		}
-	      subranges.push_back(s);
-	    }
-	}
-    }
+  // The type of array elements.
+  type_base_sptr type =
+    ctxt.build_or_get_type_decl(type_id, true);
+  ABG_ASSERT(type);
 
-  array_type_def_sptr ar_type(new array_type_def(type,
-						 subranges,
-						 loc));
+  array_type_def_sptr ar_type(new array_type_def(type, subranges, loc));
+  maybe_set_artificial_location(ctxt, node, ar_type);
+  if (ctxt.push_and_key_type_decl(ar_type, id, add_to_current_scope))
+    ctxt.map_xml_node_to_decl(node, ar_type);
 
   if (dimensions != ar_type->get_dimension_count()
       || (alignment_in_bits
@@ -4088,13 +4306,7 @@
 	}
     }
 
-  if (ctxt.push_and_key_type_decl(ar_type, id, add_to_current_scope))
-    {
-      ctxt.map_xml_node_to_decl(node, ar_type);
-      return ar_type;
-    }
-
-  return nil;
+  return ar_type;
 }
 
 /// Build an @ref enum_type_decl from the XML node that represents it,
@@ -4182,11 +4394,10 @@
 
   string base_type_id;
   enum_type_decl::enumerators enums;
-  for (xmlNodePtr n = node->children; n; n = n->next)
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       n;
+       n = xmlNextElementSibling(n))
     {
-      if (n->type != XML_ELEMENT_NODE)
-	continue;
-
       if (xmlStrEqual(n->name, BAD_CAST("underlying-type")))
 	{
 	  xml_char_sptr a = xml::build_sptr(xmlGetProp(n, BAD_CAST("type-id")));
@@ -4208,7 +4419,11 @@
 	  if (a)
 	    {
 	      value = strtoll(CHAR_STR(a), NULL, 0);
-	      if (value == LLONG_MIN || value == LLONG_MAX)
+	      // when strtoll encounters overflow or underflow, errno
+	      // is set to ERANGE and the returned value is either
+	      // LLONG_MIN or LLONG_MAX.
+	      if ((errno == ERANGE)
+		  && (value == LLONG_MIN || value == LLONG_MAX))
 		return nil;
 	    }
 
@@ -4223,11 +4438,13 @@
   enum_type_decl_sptr t(new enum_type_decl(name, loc,
 					   underlying_type,
 					   enums, linkage_name));
+  maybe_set_artificial_location(ctxt, node, t);
   t->set_is_anonymous(is_anonymous);
   t->set_is_artificial(is_artificial);
   t->set_is_declaration_only(is_decl_only);
   if (ctxt.push_and_key_type_decl(t, id, add_to_current_scope))
     {
+      maybe_set_naming_typedef(ctxt, node, t);
       ctxt.map_xml_node_to_decl(node, t);
       return t;
     }
@@ -4265,47 +4482,34 @@
     id = CHAR_STR(s);
   ABG_ASSERT(!id.empty());
 
-  string name;
-  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "name"))
-    name = xml::unescape_xml_string(CHAR_STR(s));
-
-  string type_id;
-  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "type-id"))
-    type_id = CHAR_STR(s);
-  shared_ptr<type_base> underlying_type(ctxt.build_or_get_type_decl(type_id,
-								    true));
-  ABG_ASSERT(underlying_type);
-
-  // maybe building the underlying type triggered building this one in
-  // the mean time ...
-  if (decl_base_sptr d = ctxt.get_decl_for_xml_node(node))
+  if (type_base_sptr t = ctxt.get_type_decl(id))
     {
-      typedef_decl_sptr result = dynamic_pointer_cast<typedef_decl>(d);
+      typedef_decl_sptr result = is_typedef(t);
       ABG_ASSERT(result);
       return result;
     }
 
+  string name;
+  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "name"))
+    name = xml::unescape_xml_string(CHAR_STR(s));
+
   location loc;
   read_location(ctxt, node, loc);
 
-  if (type_base_sptr d = ctxt.get_type_decl(id))
-    {
-      typedef_decl_sptr ty = dynamic_pointer_cast<typedef_decl>(d);
-      ABG_ASSERT(ty);
-      ABG_ASSERT(name == ty->get_name());
-      ABG_ASSERT(get_type_name(underlying_type)
-	     == get_type_name(ty->get_underlying_type()));
-      // it's possible to have the same typedef several times.
-    }
+  string type_id;
+  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "type-id"))
+    type_id = CHAR_STR(s);
+  ABG_ASSERT(!type_id.empty());
+
+  type_base_sptr underlying_type(ctxt.build_or_get_type_decl(type_id, true));
+  ABG_ASSERT(underlying_type);
+
   typedef_decl_sptr t(new typedef_decl(name, underlying_type, loc));
+  maybe_set_artificial_location(ctxt, node, t);
+  ctxt.push_and_key_type_decl(t, id, add_to_current_scope);
+  ctxt.map_xml_node_to_decl(node, t);
 
-  if (ctxt.push_and_key_type_decl(t, id, add_to_current_scope))
-    {
-      ctxt.map_xml_node_to_decl(node, t);
-      return t;
-    }
-
-  return nil;
+  return t;
 }
 
 /// Build a class from its XML node if it is not suppressed by a
@@ -4418,15 +4622,18 @@
   bool is_anonymous = false;
   read_is_anonymous(node, is_anonymous);
 
-  string naming_typedef_id;
-
-  if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "naming-typedef-id"))
-    naming_typedef_id = xml::unescape_xml_string(CHAR_STR(s));
-
   ABG_ASSERT(!id.empty());
+
   class_decl_sptr previous_definition, previous_declaration;
-  const vector<type_base_sptr> *types_ptr = 0;
   if (!is_anonymous)
+    if (type_base_sptr t = ctxt.get_type_decl(id))
+      {
+	previous_definition  = is_class_type(t);
+	ABG_ASSERT(previous_definition);
+      }
+
+  const vector<type_base_sptr> *types_ptr = 0;
+  if (!is_anonymous && !previous_definition)
     types_ptr = ctxt.get_all_type_decls(id);
   if (types_ptr)
     {
@@ -4478,6 +4685,7 @@
 	    decl->set_size_in_bits(size_in_bits);
 	  if (is_anonymous)
 	    decl->set_is_anonymous(is_anonymous);
+	  decl->set_location(loc);
 	}
       else
 	decl.reset(new class_decl(env, name, size_in_bits, alignment_in_bits,
@@ -4485,6 +4693,7 @@
 				  data_mbrs, mbr_functions, is_anonymous));
     }
 
+  maybe_set_artificial_location(ctxt, node, decl);
   decl->set_is_artificial(is_artificial);
 
   string def_id;
@@ -4545,19 +4754,12 @@
   ctxt.key_type_decl(decl, id);
 
   // If this class has a naming typedef, get it and refer to it.
-  if (!naming_typedef_id.empty())
-    {
-      typedef_decl_sptr naming_typedef =
-	is_typedef(ctxt.build_or_get_type_decl(naming_typedef_id, true));
-      ABG_ASSERT(naming_typedef);
-      decl->set_naming_typedef(naming_typedef);
-    }
+  maybe_set_naming_typedef(ctxt, node, decl);
 
-  for (xmlNodePtr n = node->children; !is_decl_only && n; n = n->next)
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       !is_decl_only && n;
+       n = xmlNextElementSibling(n))
     {
-      if (n->type != XML_ELEMENT_NODE)
-	continue;
-
       if (xmlStrEqual(n->name, BAD_CAST("base-class")))
 	{
 	  access_specifier access =
@@ -4604,11 +4806,10 @@
 
 	  ctxt.map_xml_node_to_decl(n, decl);
 
-	  for (xmlNodePtr p = n->children; p; p = p->next)
+	  for (xmlNodePtr p = xmlFirstElementChild(n);
+	       p;
+	       p = xmlNextElementSibling(p))
 	    {
-	      if (p->type != XML_ELEMENT_NODE)
-		continue;
-
 	      if (type_base_sptr t =
 		  build_type(ctxt, p, /*add_to_current_scope=*/true))
 		{
@@ -4642,11 +4843,10 @@
 	  bool is_static = false;
 	  read_static(n, is_static);
 
-	  for (xmlNodePtr p = n->children; p; p = p->next)
+	  for (xmlNodePtr p = xmlFirstElementChild(n);
+	       p;
+	       p = xmlNextElementSibling(p))
 	    {
-	      if (p->type != XML_ELEMENT_NODE)
-		continue;
-
 	      if (var_decl_sptr v =
 		  build_var_decl(ctxt, p, /*add_to_cur_scope=*/false))
 		{
@@ -4700,11 +4900,10 @@
 	  bool is_ctor = false, is_dtor = false, is_const = false;
 	  read_cdtor_const(n, is_ctor, is_dtor, is_const);
 
-	  for (xmlNodePtr p = n->children; p; p = p->next)
+	  for (xmlNodePtr p = xmlFirstElementChild(n);
+	       p;
+	       p = xmlNextElementSibling(p))
 	    {
-	      if (p->type != XML_ELEMENT_NODE)
-		continue;
-
 	      if (function_decl_sptr f =
 		  build_function_decl_if_not_suppressed(ctxt, p, decl,
 							/*add_to_cur_sc=*/true))
@@ -4739,11 +4938,10 @@
 	  bool is_ctor = false, is_dtor = false, is_const = false;
 	  read_cdtor_const(n, is_ctor, is_dtor, is_const);
 
-	  for (xmlNodePtr p = n->children; p; p = p->next)
+	  for (xmlNodePtr p = xmlFirstElementChild(n);
+	       p;
+	       p = xmlNextElementSibling(p))
 	    {
-	      if (p->type != XML_ELEMENT_NODE)
-		continue;
-
 	      if (shared_ptr<function_tdecl> f =
 		  build_function_tdecl(ctxt, p,
 				       /*add_to_current_scope=*/true))
@@ -4893,6 +5091,7 @@
 				  is_anonymous));
     }
 
+  maybe_set_artificial_location(ctxt, node, decl);
   decl->set_is_artificial(is_artificial);
 
   string def_id;
@@ -4953,11 +5152,12 @@
   ctxt.map_xml_node_to_decl(node, decl);
   ctxt.key_type_decl(decl, id);
 
-  for (xmlNodePtr n = node->children; !is_decl_only && n; n = n->next)
-    {
-      if (n->type != XML_ELEMENT_NODE)
-	continue;
+  maybe_set_naming_typedef(ctxt, node, decl);
 
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       !is_decl_only && n;
+       n = xmlNextElementSibling(n))
+    {
       if (xmlStrEqual(n->name, BAD_CAST("member-type")))
 	{
 	  access_specifier access = private_access;
@@ -4965,11 +5165,10 @@
 
 	  ctxt.map_xml_node_to_decl(n, decl);
 
-	  for (xmlNodePtr p = n->children; p; p = p->next)
+	  for (xmlNodePtr p = xmlFirstElementChild(n);
+	       p;
+	       p = xmlNextElementSibling(p))
 	    {
-	      if (p->type != XML_ELEMENT_NODE)
-		continue;
-
 	      if (type_base_sptr t =
 		  build_type(ctxt, p, /*add_to_current_scope=*/true))
 		{
@@ -4997,11 +5196,10 @@
 	  bool is_static = false;
 	  read_static(n, is_static);
 
-	  for (xmlNodePtr p = n->children; p; p = p->next)
+	  for (xmlNodePtr p = xmlFirstElementChild(n);
+	       p;
+	       p = xmlNextElementSibling(p))
 	    {
-	      if (p->type != XML_ELEMENT_NODE)
-		continue;
-
 	      if (var_decl_sptr v =
 		  build_var_decl(ctxt, p, /*add_to_cur_scope=*/false))
 		{
@@ -5039,11 +5237,10 @@
 	  bool is_ctor = false, is_dtor = false, is_const = false;
 	  read_cdtor_const(n, is_ctor, is_dtor, is_const);
 
-	  for (xmlNodePtr p = n->children; p; p = p->next)
+	  for (xmlNodePtr p = xmlFirstElementChild(n);
+	       p;
+	       p = xmlNextElementSibling(p))
 	    {
-	      if (p->type != XML_ELEMENT_NODE)
-		continue;
-
 	      if (function_decl_sptr f =
 		  build_function_decl_if_not_suppressed(ctxt, p, decl,
 							/*add_to_cur_sc=*/true))
@@ -5072,11 +5269,10 @@
 	  bool is_ctor = false, is_dtor = false, is_const = false;
 	  read_cdtor_const(n, is_ctor, is_dtor, is_const);
 
-	  for (xmlNodePtr p = n->children; p; p = p->next)
+	  for (xmlNodePtr p = xmlFirstElementChild(n);
+	       p;
+	       p = xmlNextElementSibling(p))
 	    {
-	      if (p->type != XML_ELEMENT_NODE)
-		continue;
-
 	      if (function_tdecl_sptr f =
 		  build_function_tdecl(ctxt, p,
 				       /*add_to_current_scope=*/true))
@@ -5147,15 +5343,15 @@
   ABG_ASSERT(env);
 
   function_tdecl_sptr fn_tmpl_decl(new function_tdecl(env, loc, vis, bind));
+  maybe_set_artificial_location(ctxt, node, fn_tmpl_decl);
 
   ctxt.push_decl_to_current_scope(fn_tmpl_decl, add_to_current_scope);
 
   unsigned parm_index = 0;
-  for (xmlNodePtr n = node->children; n; n = n->next)
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       n;
+       n = xmlNextElementSibling(n))
     {
-      if (n->type != XML_ELEMENT_NODE)
-	continue;
-
       if (template_parameter_sptr parm =
 	  build_template_parameter(ctxt, n, parm_index, fn_tmpl_decl))
 	{
@@ -5211,15 +5407,15 @@
   ABG_ASSERT(env);
 
   class_tdecl_sptr class_tmpl (new class_tdecl(env, loc, vis));
+  maybe_set_artificial_location(ctxt, node, class_tmpl);
 
   ctxt.push_decl_to_current_scope(class_tmpl, add_to_current_scope);
 
   unsigned parm_index = 0;
-  for (xmlNodePtr n = node->children; n; n = n->next)
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       n;
+       n = xmlNextElementSibling(n))
     {
-      if (n->type != XML_ELEMENT_NODE)
-	continue;
-
       if (template_parameter_sptr parm=
 	  build_template_parameter(ctxt, n, parm_index, class_tmpl))
 	{
@@ -5289,6 +5485,7 @@
   read_location(ctxt, node,loc);
 
   result.reset(new type_tparameter(index, tdecl, name, loc));
+  maybe_set_artificial_location(ctxt, node, result);
 
   if (id.empty())
     ctxt.push_decl_to_current_scope(dynamic_pointer_cast<decl_base>(result),
@@ -5334,11 +5531,10 @@
   ctxt.push_decl_to_current_scope(dynamic_pointer_cast<decl_base>(result),
 				  /*add_to_current_scope=*/true);
 
-  for (xmlNodePtr n = node->children; n; n = n->next)
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       n;
+       n = xmlNextElementSibling(n))
     {
-      if (n->type != XML_ELEMENT_NODE)
-	continue;
-
       if ((composed_type =
 	   build_pointer_type_def(ctxt, n,
 				  /*add_to_current_scope=*/true))
@@ -5404,6 +5600,7 @@
   read_location(ctxt, node,loc);
 
   r.reset(new non_type_tparameter(index, tdecl, name, type, loc));
+  maybe_set_artificial_location(ctxt, node, r);
   ctxt.push_decl_to_current_scope(dynamic_pointer_cast<decl_base>(r),
 				  /*add_to_current_scope=*/true);
 
@@ -5459,23 +5656,20 @@
 
   template_tparameter_sptr result(new template_tparameter(index, tdecl,
 							  name, loc));
-
+  maybe_set_artificial_location(ctxt, node, result);
   ctxt.push_decl_to_current_scope(result, /*add_to_current_scope=*/true);
 
   // Go parse template parameters that are children nodes
   int parm_index = 0;
-  for (xmlNodePtr n = node->children; n; n = n->next)
-    {
-      if (n->type != XML_ELEMENT_NODE)
-	continue;
-
-      if (shared_ptr<template_parameter> p =
-	  build_template_parameter(ctxt, n, parm_index, result))
-	{
-	  result->add_template_parameter(p);
-	  ++parm_index;
-	}
-    }
+  for (xmlNodePtr n = xmlFirstElementChild(node);
+       n;
+       n = xmlNextElementSibling(n))
+    if (shared_ptr<template_parameter> p =
+	build_template_parameter(ctxt, n, parm_index, result))
+      {
+	result->add_template_parameter(p);
+	++parm_index;
+      }
 
   if (result)
     {
@@ -5555,7 +5749,10 @@
 	abi->record_type_as_reachable_from_public_interfaces(*t);
     }
 
-  ctxt.maybe_canonicalize_type(t);
+  MAYBE_MAP_TYPE_WITH_TYPE_ID(t, node);
+
+  if (t)
+    ctxt.maybe_canonicalize_type(t,/*force_delay=*/false );
   return t;
 }
 
@@ -5570,6 +5767,7 @@
 		 bool		add_to_current_scope)
 {
   type_decl_sptr decl = build_type_decl(ctxt, node, add_to_current_scope);
+  MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
   if (decl && decl->get_scope())
     ctxt.maybe_canonicalize_type(decl, /*force_delay=*/false);
   return decl;
@@ -5603,6 +5801,7 @@
   qualified_type_def_sptr decl =
     build_qualified_type_decl(ctxt, node,
 			      add_to_current_scope);
+  MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
   if (decl && decl->get_scope())
     ctxt.maybe_canonicalize_type(decl, /*force_delay=*/false);
   return decl;
@@ -5620,6 +5819,7 @@
 {
   pointer_type_def_sptr decl = build_pointer_type_def(ctxt, node,
 						      add_to_current_scope);
+  MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
   if (decl && decl->get_scope())
     ctxt.maybe_canonicalize_type(decl, /*force_delay=*/false);
   return decl;
@@ -5637,6 +5837,7 @@
 {
   reference_type_def_sptr decl = build_reference_type_def(ctxt, node,
 							  add_to_current_scope);
+  MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
   if (decl && decl->get_scope())
     ctxt.maybe_canonicalize_type(decl, /*force_delay=*/false);
   return decl;
@@ -5649,11 +5850,12 @@
 /// function_type is added to.
 static type_base_sptr
 handle_function_type(read_context&	ctxt,
-		     xmlNodePtr		node,
+		     xmlNodePtr	node,
 		     bool		add_to_current_scope)
 {
   function_type_sptr type = build_function_type(ctxt, node,
-						add_to_current_scope);
+						  add_to_current_scope);
+  MAYBE_MAP_TYPE_WITH_TYPE_ID(type, node);
   ctxt.maybe_canonicalize_type(type, /*force_delay=*/true);
   return type;
 }
@@ -5670,6 +5872,7 @@
 {
   array_type_def_sptr decl = build_array_type_def(ctxt, node,
 						  add_to_current_scope);
+  MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
   ctxt.maybe_canonicalize_type(decl, /*force_delay=*/false);
   return decl;
 }
@@ -5685,6 +5888,7 @@
   enum_type_decl_sptr decl =
     build_enum_type_decl_if_not_suppressed(ctxt, node,
 					   add_to_current_scope);
+  MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
   if (decl && decl->get_scope())
     ctxt.maybe_canonicalize_type(decl, /*force_delay=*/false);
   return decl;
@@ -5700,6 +5904,7 @@
 {
   typedef_decl_sptr decl = build_typedef_decl(ctxt, node,
 					      add_to_current_scope);
+  MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
   if (decl && decl->get_scope())
     ctxt.maybe_canonicalize_type(decl, /*force_delay=*/false);
   return decl;
@@ -5752,6 +5957,7 @@
 {
   class_decl_sptr decl =
     build_class_decl_if_not_suppressed(ctxt, node, add_to_current_scope);
+  MAYBE_MAP_TYPE_WITH_TYPE_ID(is_type(decl), node);
   if (decl && decl->get_scope())
     ctxt.maybe_canonicalize_type(decl, /*force_delay=*/false);
   return decl;
@@ -5770,6 +5976,7 @@
 {
   union_decl_sptr decl =
     build_union_decl_if_not_suppressed(ctxt, node, add_to_current_scope);
+  MAYBE_MAP_TYPE_WITH_TYPE_ID(is_type(decl), node);
   if (decl && decl->get_scope())
     ctxt.maybe_canonicalize_type(decl, /*force_delay=*/false);
   return decl;
@@ -5846,6 +6053,10 @@
 					    env));
   corpus_sptr corp(new corpus(env));
   result->set_corpus(corp);
+#ifdef WITH_DEBUG_SELF_COMPARISON
+  if (env->self_comparison_debug_is_on())
+    env->set_self_comparison_debug_input(result->get_corpus());
+#endif
   result->set_path(path);
   return result;
 }
@@ -5865,6 +6076,10 @@
 					    env));
   corpus_sptr corp(new corpus(env, ""));
   result->set_corpus(corp);
+#ifdef WITH_DEBUG_SELF_COMPARISON
+  if (env->self_comparison_debug_is_on())
+    env->set_self_comparison_debug_input(result->get_corpus());
+#endif
   return result;
 }
 
@@ -5919,4 +6134,89 @@
 
 }//end namespace xml_reader
 
+#ifdef WITH_DEBUG_SELF_COMPARISON
+/// Load the map that is stored at
+/// environment::get_type_id_canonical_type_map().
+///
+/// That map associates type-ids to the pointer value of the canonical
+/// types they correspond to.  The map is loaded from a file that was
+/// stored on disk by some debugging primitive that is activated when
+/// the command "abidw --debug-abidiff <binary>' is used."
+///
+/// The function that stored the map in that file is
+/// write_canonical_type_ids.
+///
+/// @param ctxt the read context to use.
+///
+/// @param file_path the path to the file containing the type-ids <->
+/// canonical type mapping.
+///
+/// @return true iff the loading was successful.
+bool
+load_canonical_type_ids(xml_reader::read_context& ctxt, const string &file_path)
+{
+  xmlDocPtr doc = xmlReadFile(file_path.c_str(), NULL, XML_PARSE_NOERROR);
+  if (!doc)
+    return false;
+
+  xmlNodePtr node = xmlDocGetRootElement(doc);
+  if (!node)
+    return false;
+
+  // We expect a file which content looks like:
+  //
+  // <abixml-types-check>
+  //     <type>
+  //       <id>type-id-573</id>
+  //       <c>0x262ee28</c>
+  //     </type>
+  //     <type>
+  //       <id>type-id-569</id>
+  //       <c>0x2628298</c>
+  //     </type>
+  //     <type>
+  //       <id>type-id-575</id>
+  //       <c>0x25f9ba8</c>
+  //     </type>
+  // <abixml-types-check>
+  //
+  // So let's parse it!
+
+  if (xmlStrcmp(node->name, (xmlChar*) "abixml-types-check"))
+    return false;
+
+  for (node = xmlFirstElementChild(node);
+       node;
+       node = xmlNextElementSibling(node))
+    {
+      if (xmlStrcmp(node->name, (xmlChar*) "type"))
+	continue;
+
+      string id, canonical_address;
+      xmlNodePtr data = xmlFirstElementChild(node);
+      if (data && !xmlStrcmp(data->name, (xmlChar*) "id")
+	  && data->children && xmlNodeIsText(data->children))
+	id = (char*) XML_GET_CONTENT(data->children);
+
+      data = xmlNextElementSibling(data);
+      if (data && !xmlStrcmp(data->name, (xmlChar*) "c")
+	  && data->children && xmlNodeIsText(data->children))
+	{
+	  canonical_address = (char*) XML_GET_CONTENT(data->children);
+	  std::stringstream s;
+	  s << canonical_address;
+	  uintptr_t v = 0;
+	  s >>  std::hex >> v;
+	  if (!id.empty()
+	      // 0xdeadbabe is the special value the hash of types
+	      // that are not canonicalized.  Look into function
+	      // hash_as_canonical_type_or_constant for the details.
+	      && v != 0xdeadbabe)
+	    ctxt.get_environment()->get_type_id_canonical_type_map()[id] = v;
+	}
+    }
+  return true;
+}
+#endif
+
 }//end namespace abigail
diff --git a/src/abg-suppression.cc b/src/abg-suppression.cc
index d3343a8..eab5fc1 100644
--- a/src/abg-suppression.cc
+++ b/src/abg-suppression.cc
@@ -14,6 +14,7 @@
 
 #include "abg-internal.h"
 #include <memory>
+#include <limits>
 
 // <headers defining libabigail's API go under here>
 ABG_BEGIN_EXPORT_DECLARATIONS
@@ -773,67 +774,91 @@
       d = is_type_diff(get_typedef_diff_underlying_type_diff(d));
     }
 
+  // Now let's consider class diffs in the context of a suppr spec
+  // that contains properties like "has_data_member_inserted_*".
+
   const class_diff* klass_diff = dynamic_cast<const class_diff*>(d);
-  if (// We are looking at a class diff ...
-      klass_diff
-      // ... that has inserted data members ...
-      && !get_data_member_insertion_ranges().empty()
-      // ... that has no deleted data members ...
-      && klass_diff->deleted_data_members().empty()
-      // ... and in which the class size hasn't shrunk (because, e.g,
-      // the base classes have changed).
-      && (klass_diff->first_class_decl()->get_size_in_bits()
-	  <= klass_diff->second_class_decl()->get_size_in_bits()))
+  if (klass_diff)
     {
-      const class_decl_sptr& first_type_decl = klass_diff->first_class_decl();
-      const class_decl_sptr& second_type_decl = klass_diff->second_class_decl();
-      size_t first_type_size = first_type_decl->get_size_in_bits();
-      size_t second_type_size = second_type_decl->get_size_in_bits();
-
-      for (string_decl_base_sptr_map::const_iterator m =
-	     klass_diff->inserted_data_members().begin();
-	   m != klass_diff->inserted_data_members().end();
-	   ++m)
+      // We are looking at a class diff ...
+      if (!get_data_member_insertion_ranges().empty())
 	{
-	  decl_base_sptr member = m->second;
-	  size_t dm_offset = get_data_member_offset(member);
-	  bool matched = false;
-
-	  for (insertion_ranges::const_iterator i =
-		 get_data_member_insertion_ranges().begin();
-	       i != get_data_member_insertion_ranges().end();
-	       ++i)
+	  // ... and the suppr spec contains a
+	  // "has_data_member_inserted_*" clause ...
+	  if (klass_diff->deleted_data_members().empty()
+	      && (klass_diff->first_class_decl()->get_size_in_bits()
+		  <= klass_diff->second_class_decl()->get_size_in_bits()))
 	    {
-	      type_suppression::insertion_range_sptr range = *i;
-	      ssize_t range_begin_val = 0,range_end_val = 0;
-	      if (!type_suppression::insertion_range::eval_boundary
-		  (range->begin(), first_type_decl, range_begin_val))
-		break;
-	      if (!type_suppression::insertion_range::eval_boundary
-		  (range->end(), first_type_decl, range_end_val))
-		break;
+	      // That "has_data_member_inserted_*" clause doesn't hold
+	      // if the class has deleted data members or shrunk.
 
-	      unsigned range_begin =
-		(range_begin_val < 0) ? first_type_size : range_begin_val;
+	      const class_decl_sptr& first_type_decl =
+		klass_diff->first_class_decl();
 
-	      unsigned range_end =
-		(range_end_val < 0) ? second_type_size : range_end_val;
-
-	      if (range_begin > range_end)
-		continue;
-
-	      if (range_begin_val < 0 || range_end_val < 0)
+	      for (string_decl_base_sptr_map::const_iterator m =
+		     klass_diff->inserted_data_members().begin();
+		   m != klass_diff->inserted_data_members().end();
+		   ++m)
 		{
-		  if (dm_offset < range_begin)
-		    continue;
-		}
-	      else
-		if (dm_offset < range_begin || dm_offset > range_end)
-		  continue;
+		  decl_base_sptr member = m->second;
+		  size_t dm_offset = get_data_member_offset(member);
+		  bool matched = false;
 
-	      matched = true;
+		  for (insertion_ranges::const_iterator i =
+			 get_data_member_insertion_ranges().begin();
+		       i != get_data_member_insertion_ranges().end();
+		       ++i)
+		    {
+		      type_suppression::insertion_range_sptr range = *i;
+		      uint64_t range_begin_val = 0, range_end_val = 0;
+		      if (!type_suppression::insertion_range::eval_boundary
+			  (range->begin(), first_type_decl, range_begin_val))
+			break;
+		      if (!type_suppression::insertion_range::eval_boundary
+			  (range->end(), first_type_decl, range_end_val))
+			break;
+
+		      uint64_t range_begin = range_begin_val;
+		      uint64_t range_end = range_end_val;
+
+		      if (insertion_range::boundary_value_is_end(range_begin)
+			  && insertion_range::boundary_value_is_end(range_end))
+			{
+			  // This idiom represents the predicate
+			  // "has_data_member_inserted_at = end"
+			  if (dm_offset >
+			      get_data_member_offset(get_last_data_member
+						     (first_type_decl)))
+			    {
+			      // So the data member was added after
+			      // last data member of the klass.  That
+			      // matches the suppr spec
+			      // "has_data_member_inserted_at = end".
+			      matched = true;
+			      continue;
+			    }
+			}
+
+			if (range_begin > range_end)
+			  // Wrong suppr spec.  Ignore it.
+			  continue;
+
+		      if (dm_offset < range_begin || dm_offset > range_end)
+			// The offset of the added data member doesn't
+			// match the insertion range specified.  So
+			// the diff object won't be suppressed.
+			continue;
+
+		      // If we reached this point, then all the
+		      // insertion range constraints have been
+		      // satisfied.  So
+		      matched = true;
+		    }
+		  if (!matched)
+		    return false;
+		}
 	    }
-	  if (!matched)
+	  else
 	    return false;
 	}
     }
@@ -1311,7 +1336,7 @@
 bool
 type_suppression::insertion_range::eval_boundary(boundary_sptr	 boundary,
 						 class_decl_sptr context,
-						 ssize_t&	 value)
+						 uint64_t&	 value)
 {
   if (integer_boundary_sptr b = is_integer_boundary(boundary))
     {
@@ -1338,8 +1363,13 @@
 		  if (fn_call->get_name() == "offset_of")
 		    value = get_data_member_offset(*it);
 		  else if (fn_call->get_name() == "offset_after")
-		    value = get_data_member_offset(*it) +
-		      (*it)->get_type()->get_size_in_bits();
+		    {
+		      if (!get_next_data_member_offset(context, *it, value))
+			{
+			  value = get_data_member_offset(*it) +
+			    (*it)->get_type()->get_size_in_bits();
+			}
+		    }
 		  else
 		    // We should not reach this point.
 		    abort();
@@ -1351,6 +1381,19 @@
   return false;
 }
 
+/// Test if a given value supposed to be inside an insertion range
+/// represents the end of the range.
+///
+/// @param value the value to test for.
+///
+/// @return true iff @p value represents the end of the insertion
+/// range.
+bool
+type_suppression::insertion_range::boundary_value_is_end(uint64_t value)
+{
+  return value == std::numeric_limits<uint64_t>::max();
+}
+
 /// Tests if a given instance of @ref
 /// type_suppression::insertion_range::boundary is actually an integer boundary.
 ///
@@ -1398,13 +1441,13 @@
 /// type_suppression::insertion_range::integer_boundary.
 struct type_suppression::insertion_range::integer_boundary::priv
 {
-  int value_;
+  uint64_t value_;
 
   priv()
     : value_()
   {}
 
-  priv(int value)
+  priv(uint64_t value)
     : value_(value)
   {}
 }; // end type_suppression::insertion_range::integer_boundary::priv
@@ -1413,22 +1456,22 @@
 /// type_suppression::insertion_range::integer_boundary.
 ///
 /// @param value the integer value of the newly created integer boundary.
-type_suppression::insertion_range::integer_boundary::integer_boundary(int value)
+type_suppression::insertion_range::integer_boundary::integer_boundary(uint64_t value)
   : priv_(new priv(value))
 {}
 
-/// Return the integer value of the current inace of @ref
+/// Return the integer value of the current instance of @ref
 /// type_suppression::insertion_range::integer_boundary.
 ///
 /// @return the integer value of the current boundary.
-int
+uint64_t
 type_suppression::insertion_range::integer_boundary::as_integer() const
 {return priv_->value_;}
 
 /// Converts the current boundary into an integer value.
 ///
 /// @return the integer value of the current boundary.
-type_suppression::insertion_range::integer_boundary::operator int() const
+type_suppression::insertion_range::integer_boundary::operator uint64_t() const
 {return as_integer();}
 
 /// Destructor of @ref type_suppression::insertion_range::integer_boundary.
diff --git a/src/abg-symtab-reader.cc b/src/abg-symtab-reader.cc
index edc9d82..04e8b23 100644
--- a/src/abg-symtab-reader.cc
+++ b/src/abg-symtab-reader.cc
@@ -315,10 +315,7 @@
 	 elf_helpers::stb_to_elf_symbol_binding(GELF_ST_BIND(sym->st_info)),
 	 sym_is_defined, sym_is_common, ver,
 	 elf_helpers::stv_to_elf_symbol_visibility
-	 (GELF_ST_VISIBILITY(sym->st_other)),
-	 /*is_linux_strings_cstr=*/false); // TODO: remove
-					   // is_linux_strings_cstr
-					   // as it is obsolete
+	 (GELF_ST_VISIBILITY(sym->st_other)));
 
       // We do not take suppressed symbols into our symbol vector to avoid
       // accidental leakage. But we ensure supressed symbols are otherwise set
@@ -354,6 +351,7 @@
 	      elf_helpers::maybe_adjust_et_rel_sym_addr_to_abs_addr(elf_handle,
 								    sym);
 
+	  // See also symtab::add_alternative_address_lookups.
 	  if (symbol_sptr->is_function())
 	    {
 	      if (is_arm32)
@@ -376,6 +374,8 @@
 	}
     }
 
+  add_alternative_address_lookups(elf_handle);
+
   is_kernel_binary_ = elf_helpers::is_linux_kernel(elf_handle);
 
   // Now apply the ksymtab_exported attribute to the symbols we collected.
@@ -564,5 +564,100 @@
     }
 }
 
+/// Fill up the lookup maps with alternative keys
+///
+/// Due to special features like Control-Flow-Integrity (CFI), the symbol
+/// lookup could be done indirectly. E.g. enabling CFI causes clang to
+/// associate the DWARF information with the actual CFI protected function
+/// (suffix .cfi) instead of with the entry symbol in the symtab.
+///
+/// This function adds additional lookup keys to compensate for that.
+///
+/// So far, this only implements CFI support, by adding addr->symbol pairs
+/// where
+///    addr   :  symbol value of the <foo>.cfi valyue
+///    symbol :  symbol_sptr looked up via "<foo>"
+///
+/// @param elf_handle the ELF handle to operate on
+void
+symtab::add_alternative_address_lookups(Elf* elf_handle)
+{
+  const bool is_arm32 = elf_helpers::architecture_is_arm32(elf_handle);
+  const bool is_ppc64 = elf_helpers::architecture_is_ppc64(elf_handle);
+
+  Elf_Scn* symtab_section = elf_helpers::find_symtab_section(elf_handle);
+  if (!symtab_section)
+    return;
+  GElf_Shdr symtab_sheader;
+  gelf_getshdr(symtab_section, &symtab_sheader);
+
+  const size_t number_syms =
+      symtab_sheader.sh_size / symtab_sheader.sh_entsize;
+
+  Elf_Data* symtab = elf_getdata(symtab_section, 0);
+
+  for (size_t i = 0; i < number_syms; ++i)
+    {
+      GElf_Sym *sym, sym_mem;
+      sym = gelf_getsym(symtab, i, &sym_mem);
+      if (!sym)
+	{
+	  std::cerr << "Could not load symbol with index " << i
+		    << ": Skipping alternative symbol load.\n";
+	  continue;
+	}
+
+      const char* const name_str =
+	  elf_strptr(elf_handle, symtab_sheader.sh_link, sym->st_name);
+
+      // no name, no game
+      if (!name_str)
+	continue;
+
+      const std::string name = name_str;
+      if (name.empty())
+	continue;
+
+      // Add alternative lookup addresses for CFI symbols
+      static const std::string cfi = ".cfi";
+      if (name.size() > cfi.size()
+	  && name.compare(name.size() - cfi.size(), cfi.size(), cfi) == 0)
+	// ... name.ends_with(".cfi")
+	{
+	  const auto candidate_name = name.substr(0, name.size() - cfi.size());
+
+	  auto symbols = lookup_symbol(candidate_name);
+          // lookup_symbol returns a vector of symbols. For this case we handle
+          // only the case that there has been exactly one match. Otherwise we
+          // can't reasonably handle it and need to bail out.
+          ABG_ASSERT(symbols.size() <= 1);
+	  if (symbols.size() == 1)
+	    {
+	      const auto& symbol_sptr = symbols[0];
+	      GElf_Addr	  symbol_value =
+		  elf_helpers::maybe_adjust_et_rel_sym_addr_to_abs_addr(
+		      elf_handle, sym);
+
+	      // See also symtab::load_.
+	      if (symbol_sptr->is_function())
+		{
+		  if (is_arm32)
+		    // Clear bit zero of ARM32 addresses as per "ELF for the Arm
+		    // Architecture" section 5.5.3.
+		    // https://static.docs.arm.com/ihi0044/g/aaelf32.pdf
+		    symbol_value &= ~1;
+		  else if (is_ppc64)
+		    update_function_entry_address_symbol_map(elf_handle, sym,
+							     symbol_sptr);
+		}
+
+	      const auto result =
+		  addr_symbol_map_.emplace(symbol_value, symbol_sptr);
+	      ABG_ASSERT(result.second);
+	    }
+	}
+    }
+}
+
 } // end namespace symtab_reader
 } // end namespace abigail
diff --git a/src/abg-symtab-reader.h b/src/abg-symtab-reader.h
index 3b6d5ed..7ac1535 100644
--- a/src/abg-symtab-reader.h
+++ b/src/abg-symtab-reader.h
@@ -293,6 +293,9 @@
   update_function_entry_address_symbol_map(Elf*	     elf_handle,
 					   GElf_Sym* native_symbol,
 					   const elf_symbol_sptr& symbol_sptr);
+
+  void
+  add_alternative_address_lookups(Elf* elf_handle);
 };
 
 /// Helper class to allow range-for loops on symtabs for C++11 and later code.
diff --git a/src/abg-tools-utils.cc b/src/abg-tools-utils.cc
index ee59258..16e734e 100644
--- a/src/abg-tools-utils.cc
+++ b/src/abg-tools-utils.cc
@@ -137,7 +137,7 @@
 /// @return true iff @p s has its ABIDIFF_ERROR bit set.
 bool
 abidiff_status_has_error(abidiff_status s)
-{return s & ABIDIFF_ERROR;}
+{return s & (ABIDIFF_ERROR | ABIDIFF_USAGE_ERROR);}
 
 /// Test if an instance of @param abidiff_status bits mask represents
 /// an abi change.
@@ -1037,6 +1037,18 @@
   return version_string;
 }
 
+/// Return the version string for the ABIXML format.
+///
+/// @return the version string of the ABIXML format.
+string
+get_abixml_version_string()
+{
+  string major, minor, version_string;
+  abigail::abigail_get_abixml_version(major, minor);
+  version_string = major + "." + minor;
+  return version_string;
+}
+
 /// Execute a shell command and returns its output.
 ///
 /// @param cmd the shell command to execute.
@@ -2299,8 +2311,8 @@
   FTSENT *entry;
   while ((entry = fts_read(file_hierarchy)))
     {
-      // Skip descendents of symbolic links.
-      if (entry->fts_info == FTS_SL || entry->fts_info == FTS_SLNONE)
+      // Skip descendents of dead symbolic links.
+      if (entry->fts_info == FTS_SLNONE)
 	{
 	  fts_set(file_hierarchy, entry, FTS_SKIP);
 	  continue;
@@ -2545,7 +2557,7 @@
       char *di_root_ptr = di_root.get();
       vector<char**> di_roots;
       di_roots.push_back(&di_root_ptr);
-      abigail::dwarf_reader::status status = abigail::dwarf_reader::STATUS_OK;
+      abigail::elf_reader::status status = abigail::elf_reader::STATUS_OK;
       corpus_group_sptr group;
       if (!vmlinux.empty())
 	{
diff --git a/src/abg-writer.cc b/src/abg-writer.cc
index f9cae69..946772c 100644
--- a/src/abg-writer.cc
+++ b/src/abg-writer.cc
@@ -31,12 +31,12 @@
 
 #include "abg-config.h"
 #include "abg-corpus.h"
-#include "abg-diff-utils.h"
 #include "abg-hash.h"
 #include "abg-sptr-utils.h"
 
 #include "abg-writer.h"
 #include "abg-libxml-utils.h"
+#include "abg-fwd.h"
 
 ABG_END_EXPORT_DECLARATIONS
 // </headers defining libabigail's API>
@@ -118,19 +118,13 @@
 /// A convenience typedef for a map that associates a pointer to type
 /// to a string.  The pointer to type is hashed as fast as possible.
 typedef unordered_map<type_base*,
-		      interned_string,
-		      type_hasher,
-		      abigail::diff_utils::deep_ptr_eq_functor> type_ptr_map;
+		      interned_string> type_ptr_map;
 
 // A convenience typedef for a set of type_base*.
-typedef unordered_set<const type_base*, type_hasher,
-		      abigail::diff_utils::deep_ptr_eq_functor>
-type_ptr_set_type;
+typedef unordered_set<const type_base*> type_ptr_set_type;
 
 /// A convenience typedef for a set of function type*.
-typedef unordered_set<function_type*, type_hasher,
-		      abigail::diff_utils::deep_ptr_eq_functor>
-fn_type_ptr_set_type;
+typedef unordered_set<function_type*> fn_type_ptr_set_type;
 
 typedef unordered_map<shared_ptr<function_tdecl>,
 		      string,
@@ -158,7 +152,6 @@
   mutable type_ptr_map			m_type_id_map;
   mutable unordered_set<uint32_t>	m_used_type_id_hashes;
   mutable type_ptr_set_type		m_emitted_type_set;
-  type_ptr_set_type			m_emitted_decl_only_set;
   // A map of types that are referenced by emitted pointers,
   // references or typedefs
   type_ptr_set_type			m_referenced_types_set;
@@ -168,9 +161,7 @@
   class_tmpl_shared_ptr_map		m_class_tmpl_id_map;
   string_elf_symbol_sptr_map_type	m_fun_symbol_map;
   string_elf_symbol_sptr_map_type	m_var_symbol_map;
-  mutable unordered_map<interned_string,
-			bool,
-			hash_interned_string> m_emitted_decls_map;
+  unordered_set<interned_string, hash_interned_string> m_emitted_decls_set;
 
   write_context();
 
@@ -396,10 +387,8 @@
   bool
   type_has_existing_id(type_base* type) const
   {
-    type_base *c = type->get_naked_canonical_type();
-    if (c == 0)
-      c = const_cast<type_base*>(type);
-    return (m_type_id_map.find(c) != m_type_id_map.end());
+    type = get_exemplar_type(type);
+    return m_type_id_map.find(type) != m_type_id_map.end();
   }
 
   /// Associate a unique id to a given type.  For that, put the type
@@ -415,11 +404,9 @@
   /// associated to it, create a new one and return it.  Otherwise,
   /// return the existing id for that type.
   interned_string
-  get_id_for_type(const type_base* t) const
+  get_id_for_type(type_base* type) const
   {
-    type_base *c = t->get_naked_canonical_type();
-    if (c == 0)
-      c = const_cast<type_base*>(t);
+    type_base* c = get_exemplar_type(type);
 
     type_ptr_map::const_iterator it = m_type_id_map.find(c);
     if (it != m_type_id_map.end())
@@ -505,24 +492,46 @@
   get_referenced_non_canonical_types() const
   {return m_referenced_non_canonical_types_set;}
 
+  /// Test if there are non emitted referenced types.
+  ///
+  /// @return true iff there are non emitted referenced types.
+  bool
+  has_non_emitted_referenced_types() const
+  {
+    for (const auto t : get_referenced_types())
+      if (!type_is_emitted(t))
+	return false;
+
+    for (const auto t : get_referenced_function_types())
+      if (!type_is_emitted(t))
+	return false;
+
+    for (const auto t : get_referenced_non_canonical_types())
+      if (!type_is_emitted(t))
+	return false;
+
+    return true;
+  }
+
   /// Record a given type as being referenced by a pointer, a
   /// reference or a typedef type that is being emitted to the XML
   /// output.
   ///
   /// @param t a shared pointer to a type
   void
-  record_type_as_referenced(const type_base_sptr& t)
+  record_type_as_referenced(const type_base_sptr& type)
   {
+    type_base* t = get_exemplar_type(type.get());
     // If the type is a function type, record it in a dedicated data
     // structure.
-    if (function_type* f = is_function_type(t.get()))
+    if (function_type* f = is_function_type(t))
       m_referenced_fn_types_set.insert(f);
     else if (!t->get_naked_canonical_type())
       // If the type doesn't have a canonical type, record it in a
       // dedicated data structure.
-      m_referenced_non_canonical_types_set.insert(t.get());
+      m_referenced_non_canonical_types_set.insert(t);
     else
-      m_referenced_types_set.insert(t.get());
+      m_referenced_types_set.insert(t);
   }
 
   /// Test if a given type has been referenced by a pointer, a
@@ -533,17 +542,17 @@
   /// @return true if the type has been referenced, false
   /// otherwise.
   bool
-  type_is_referenced(const type_base_sptr& t)
+  type_is_referenced(const type_base_sptr& type)
   {
-    if (function_type *f = is_function_type(t.get()))
+    type_base* t = get_exemplar_type(type.get());
+    if (function_type* f = is_function_type(t))
       return (m_referenced_fn_types_set.find(f)
 	      != m_referenced_fn_types_set.end());
     else if (!t->get_naked_canonical_type())
-      return (m_referenced_non_canonical_types_set.find(t.get())
+      return (m_referenced_non_canonical_types_set.find(t)
 	      != m_referenced_non_canonical_types_set.end());
     else
-      return m_referenced_types_set.find
-	(t.get()) != m_referenced_types_set.end();
+      return m_referenced_types_set.find(t) != m_referenced_types_set.end();
   }
 
   /// A comparison functor to compare pointers to @ref type_base.
@@ -624,40 +633,17 @@
   ///
   /// @param types the map to sort.
   ///
-  /// @param sorted the resulted sorted vector.  It's set by this
-  /// function with the result of the sorting.
-  void
-  sort_types(type_ptr_set_type& types,
-	     vector<type_base*>& sorted)
+  /// @return the resulting sorted vector.
+  std::vector<type_base*>
+  sort_types(type_ptr_set_type& types)
   {
-    string id;
-    for (type_ptr_set_type::const_iterator i = types.begin();
-	 i != types.end();
-	 ++i)
-      sorted.push_back(const_cast<type_base*>(*i));
+    std::vector<type_base*> sorted;
+    sorted.reserve(types.size());
+    for (const type_base* t : types)
+      sorted.push_back(const_cast<type_base*>(t));
     type_ptr_cmp comp(&m_type_id_map);
-    sort(sorted.begin(), sorted.end(), comp);
-  }
-
-  /// Sort the content of a map of type pointers into a vector.
-  ///
-  /// The pointers are sorted by using their string representation as
-  /// the key to sort, lexicographically.
-  ///
-  /// @param types the map to sort.
-  ///
-  /// @param sorted the resulted sorted vector.  It's set by this
-  /// function with the result of the sorting.
-  void
-  sort_types(const istring_type_base_wptr_map_type& types,
-	     vector<type_base_sptr> &sorted)
-  {
-    for (istring_type_base_wptr_map_type::const_iterator i = types.begin();
-	 i != types.end();
-	 ++i)
-      sorted.push_back(type_base_sptr(i->second));
-    type_ptr_cmp comp(&m_type_id_map);
-    sort(sorted.begin(), sorted.end(), comp);
+    std::sort(sorted.begin(), sorted.end(), comp);
+    return sorted;
   }
 
   /// Sort the content of a vector of function types into a vector of
@@ -666,20 +652,19 @@
   /// The pointers are sorted by using their string representation as
   /// the key to sort, lexicographically.
   ///
-  /// @param types the vector of function types to store.
+  /// @param types the vector of function types to sort.
   ///
-  /// @param sorted the resulted sorted vector.  It's set by this
-  /// function with the result of the sorting.
-  void
-  sort_types(const vector<function_type_sptr>& types,
-	     vector<type_base_sptr> &sorted)
+  /// @return the resulting sorted vector.
+  std::vector<type_base_sptr>
+  sort_types(const vector<function_type_sptr>& types)
   {
-    for (vector<function_type_sptr>::const_iterator i = types.begin();
-	 i != types.end();
-	 ++i)
-      sorted.push_back(*i);
+    std::vector<type_base_sptr> sorted;
+    sorted.reserve(types.size());
+    for (const auto& t : types)
+      sorted.push_back(t);
     type_ptr_cmp comp(&m_type_id_map);
-    sort(sorted.begin(), sorted.end(), comp);
+    std::sort(sorted.begin(), sorted.end(), comp);
+    return sorted;
   }
 
   /// Flag a type as having been written out to the XML output.
@@ -693,11 +678,9 @@
   ///
   /// @param t the type to flag.
   void
-  record_type_as_emitted(const type_base *t)
+  record_type_as_emitted(const type_base* t)
   {
-    type_base *c = t->get_naked_canonical_type();
-    if (c == 0)
-      c = const_cast<type_base*>(t);
+    type_base* c = get_exemplar_type(t);
     m_emitted_type_set.insert(c);
   }
 
@@ -708,9 +691,10 @@
   /// @return true if the type has already been emitted, false
   /// otherwise.
   bool
-  type_is_emitted(const type_base *t)
+  type_is_emitted(const type_base* t) const
   {
-    return m_emitted_type_set.find(t) != m_emitted_type_set.end();
+    type_base* c = get_exemplar_type(t);
+    return m_emitted_type_set.find(c) != m_emitted_type_set.end();
   }
 
   /// Test if a given type has been written out to the XML output.
@@ -720,20 +704,9 @@
   /// @return true if the type has already been emitted, false
   /// otherwise.
   bool
-  type_is_emitted(const type_base_sptr& t)
+  type_is_emitted(const type_base_sptr& t) const
   {return type_is_emitted(t.get());}
 
-  /// Test if the name of a given decl has been written out to the XML
-  /// output.
-  ///
-  /// @param the decl to consider.
-  ///
-  /// @return true if the decl has already been emitted, false
-  /// otherwise.
-  bool
-  decl_name_is_emitted(const interned_string& name) const
-  {return m_emitted_decls_map.find(name) != m_emitted_decls_map.end();}
-
   /// Test if a given decl has been written out to the XML output.
   ///
   /// @param the decl to consider.
@@ -741,77 +714,32 @@
   /// @return true if the decl has already been emitted, false
   /// otherwise.
   bool
-  decl_is_emitted(decl_base_sptr& decl) const
+  decl_is_emitted(const decl_base_sptr& decl) const
   {
-    if (is_type(decl))
-      return false;
-
+    ABG_ASSERT(!is_type(decl));
     string repr = get_pretty_representation(decl, true);
     interned_string irepr = decl->get_environment()->intern(repr);
-    bool is_emitted = decl_name_is_emitted(irepr);
-    return is_emitted;
+    return m_emitted_decls_set.find(irepr) != m_emitted_decls_set.end();
   }
 
-  /// Record a declaration-only class as being emitted.
-  ///
-  /// For now, this function expects a declaration-only class,
-  /// otherwise, it aborts.
-  ///
-  /// @param t the declaration-only class to report as emitted.
-  void
-  record_decl_only_type_as_emitted(type_base* t)
-  {
-    class_or_union* cl = is_class_or_union_type(t);
-    ABG_ASSERT(cl && cl->get_is_declaration_only());
-    m_emitted_decl_only_set.insert(t);
-  }
-
-  /// Record a declaration-only class as being emitted.
-  ///
-  /// For now, this function expects a declaration-only class,
-  /// otherwise, it aborts.
-  ///
-  /// @param t the declaration-only class to report as emitted.
-  void
-  record_decl_only_type_as_emitted(const type_base_sptr& t)
-  {record_decl_only_type_as_emitted(t.get());}
-
-  /// Test if a declaration-only class has been emitted.
-  ///
-  /// @param t the declaration-only class to test for.
-  ///
-  /// @return true iff the declaration-only class @p t has been
-  /// emitted.
-  bool
-  decl_only_type_is_emitted(const type_base* t)
-  {
-    type_ptr_set_type::const_iterator i = m_emitted_decl_only_set.find(t);
-    if (i == m_emitted_decl_only_set.end())
-      return false;
-    return true;
-  }
-
-  /// Test if a declaration-only class has been emitted.
-  ///
-  /// @param t the declaration-only class to test for.
-  ///
-  /// @return true iff the declaration-only class @p t has been
-  /// emitted.
-  bool
-  decl_only_type_is_emitted(const type_base_sptr& t)
-  {return decl_only_type_is_emitted(t.get());}
-
   /// Record a declaration as emitted in the abixml output.
   ///
   /// @param decl the decl to consider.
   void
-  record_decl_as_emitted(const decl_base_sptr &decl)const
+  record_decl_as_emitted(const decl_base_sptr& decl)
   {
     string repr = get_pretty_representation(decl, true);
     interned_string irepr = decl->get_environment()->intern(repr);
-    m_emitted_decls_map[irepr] = true;
+    m_emitted_decls_set.insert(irepr);
   }
 
+  /// Get the set of types that have been emitted.
+  ///
+  /// @return the set of types that have been emitted.
+  const type_ptr_set_type&
+  get_emitted_types_set() const
+  {return m_emitted_type_set;}
+
   /// Clear the map that contains the IDs of the types that has been
   /// recorded as having been written out to the XML output.
   void
@@ -857,7 +785,7 @@
 static void write_is_declaration_only(const decl_base_sptr&, ostream&);
 static void write_is_struct(const class_decl_sptr&, ostream&);
 static void write_is_anonymous(const decl_base_sptr&, ostream&);
-static void write_naming_typedef(const class_decl_sptr&, write_context&);
+static void write_naming_typedef(const decl_base_sptr&, write_context&);
 static bool write_decl(const decl_base_sptr&, write_context&, unsigned);
 static void write_decl_in_scope(const decl_base_sptr&,
 				write_context&, unsigned);
@@ -890,14 +818,12 @@
 					  write_context&, unsigned);
 static bool write_member_type(const type_base_sptr&,
 			      write_context&, unsigned);
-static bool write_class_decl_opening_tag(const class_decl_sptr&, const string&,
+static bool write_class_decl_opening_tag(const class_decl_sptr&,
 					 write_context&, unsigned, bool);
 static bool write_class_decl(const class_decl_sptr&,
 			     write_context&, unsigned);
-static bool write_union_decl_opening_tag(const union_decl_sptr&, const string&,
+static bool write_union_decl_opening_tag(const union_decl_sptr&,
 					 write_context&, unsigned, bool);
-static bool write_union_decl(const union_decl_sptr&, const string&,
-			     write_context&, unsigned);
 static bool write_union_decl(const union_decl_sptr&, write_context&, unsigned);
 static bool write_type_tparameter
 (const shared_ptr<type_tparameter>, write_context&, unsigned);
@@ -995,7 +921,7 @@
   do_indent(o, indent);
 
   o << "<!-- "
-    << xml::escape_xml_comment(decl->get_pretty_representation())
+    << xml::escape_xml_comment(decl->get_pretty_representation(/*internal=*/false))
     << " -->\n";
 
   return true;
@@ -1223,7 +1149,7 @@
 static void
 write_location(const location& loc, write_context& ctxt)
 {
-  if (!loc)
+  if (!loc || loc.get_is_artificial())
     return;
 
   if (!ctxt.get_show_locs())
@@ -1838,17 +1764,17 @@
 ///
 /// @param ctxt the write context to use.
 static void
-write_naming_typedef(const class_decl_sptr& klass, write_context& ctxt)
+write_naming_typedef(const decl_base_sptr& decl, write_context& ctxt)
 {
-  if (!klass)
+  if (!decl)
     return;
 
   ostream &o = ctxt.get_ostream();
 
-  if (typedef_decl_sptr typedef_type = klass->get_naming_typedef())
+  if (typedef_decl_sptr typedef_type = decl->get_naming_typedef())
     {
-      string id = ctxt.get_id_for_type(typedef_type);
-      o << " naming-typedef-id='" << id << "'";
+      o << " naming-typedef-id='" << ctxt.get_id_for_type(typedef_type) << "'";
+      ctxt.record_type_as_referenced(typedef_type);
     }
 }
 
@@ -1992,7 +1918,7 @@
       else if (class_decl* c = is_class_type(*i))
 	{
 	  class_decl_sptr class_type(c, noop_deleter());
-	  write_class_decl_opening_tag(class_type, "", ctxt, indent,
+	  write_class_decl_opening_tag(class_type, ctxt, indent,
 				       /*prepare_to_handle_members=*/false);
 	  closing_tags.push("</class-decl>");
 	  closing_indents.push(indent);
@@ -2006,7 +1932,7 @@
       else if (union_decl *u = is_union_type(*i))
 	{
 	  union_decl_sptr union_type(u, noop_deleter());
-	  write_union_decl_opening_tag(union_type, "", ctxt, indent,
+	  write_union_decl_opening_tag(union_type, ctxt, indent,
 				       /*prepare_to_handle_members=*/false);
 	  closing_tags.push("</union-decl>");
 	  closing_indents.push(indent);
@@ -2218,6 +2144,118 @@
   return true;
 }
 
+/// Test if a type referenced in a given translation unit should be
+/// emitted or not.
+///
+/// This is a subroutine of @ref write_translation_unit.
+///
+/// @param t the type to consider.
+///
+/// @param ctxt the write context to consider.
+///
+/// @param tu the translation unit to consider.
+///
+/// @param tu_is_last true if @p tu is the last translation unit being
+/// emitted.
+///
+/// @return true iff @p t is to be emitted.
+static bool
+referenced_type_should_be_emitted(const type_base *t,
+				  const write_context& ctxt,
+				  const translation_unit& tu,
+				  bool tu_is_last)
+{
+  if ((tu_is_last || (t->get_translation_unit()
+		      && (t->get_translation_unit()->get_absolute_path()
+			  == tu.get_absolute_path())))
+      && !ctxt.type_is_emitted(t))
+    return true;
+  return false;
+}
+
+/// Emit the types that were referenced by other emitted types.
+///
+/// This is a sub-routine of write_translation_unit.
+///
+/// @param ctxt the write context to use.
+///
+/// @param tu the current translation unit that is being emitted.
+///
+/// @param indent the indentation string.
+///
+/// @param is_last whether @p tu is the last translation unit or not.
+static void
+write_referenced_types(write_context &		ctxt,
+		       const translation_unit&	tu,
+		       const unsigned		indent,
+		       bool			is_last)
+{
+  const config& c = ctxt.get_config();
+  // Now let's handle types that were referenced, but not yet
+  // emitted because they are either:
+  //   1/ Types without canonical type
+  //   2/ or function types (these might have no scope).
+
+  while (true)
+    {
+      // This set will contain the referenced types we need to emit.
+      type_ptr_set_type referenced_types_to_emit;
+
+      // For each referenced type, ensure that it is either emitted in the
+      // translation unit to which it belongs or in the last translation
+      // unit as a last resort.
+      for (type_ptr_set_type::const_iterator i =
+	     ctxt.get_referenced_types().begin();
+	   i != ctxt.get_referenced_types().end();
+	   ++i)
+	if (referenced_type_should_be_emitted(*i, ctxt, tu, is_last))
+	  referenced_types_to_emit.insert(*i);
+
+      for (fn_type_ptr_set_type::const_iterator i =
+	     ctxt.get_referenced_function_types().begin();
+	   i != ctxt.get_referenced_function_types().end();
+	   ++i)
+	if (referenced_type_should_be_emitted(*i, ctxt, tu, is_last))
+	  referenced_types_to_emit.insert(*i);
+
+      for (type_ptr_set_type::const_iterator i =
+	     ctxt.get_referenced_non_canonical_types().begin();
+	   i != ctxt.get_referenced_non_canonical_types().end();
+	   ++i)
+	if (referenced_type_should_be_emitted(*i, ctxt, tu, is_last))
+	  referenced_types_to_emit.insert(*i);
+
+      if (referenced_types_to_emit.empty())
+        break;
+      // Ok, now let's emit the referenced type for good.
+
+      // But first, we need to sort them, otherwise, emitting the ABI
+      // (in xml) of the same binary twice will yield different
+      // results, because we'd be walking an *unordered* hash table.
+      std::vector<type_base*> sorted_types =
+	ctxt.sort_types(referenced_types_to_emit);
+
+      // Now, emit the referenced decls in a sorted order.
+      for (type_base* t : sorted_types)
+	// We handle types which have declarations *and* function
+	// types here.
+	if (ctxt.type_is_emitted(t))
+	  continue;
+	else if (decl_base* d = get_type_declaration(t))
+	  write_decl_in_scope(decl_base_sptr(d, noop_deleter()), ctxt,
+			      indent + c.get_xml_element_indent());
+	else if (function_type* f = is_function_type(t))
+	  write_function_type(function_type_sptr(f, noop_deleter()), ctxt,
+			      indent + c.get_xml_element_indent());
+	else
+	  ABG_ASSERT_NOT_REACHED;
+
+      // While emitting those referenced type, other types
+      // might have been referenced by those referenced types
+      // themselves!  So let's go around again.
+    }
+}
+
 /// Serialize a translation unit to an output stream.
 ///
 /// @param ctxt the context of the serialization.  It contains e.g,
@@ -2228,12 +2266,31 @@
 /// @param indent how many indentation spaces to use during the
 /// serialization.
 ///
+/// @param is_last If true, it means the TU to emit is the last one of
+/// the corpus.  If this is the case, all the remaining referenced
+/// types that were not emitted are going to be emitted here,
+/// irrespective of if they belong to this TU or not.  This is quite a
+/// hack.  Ideally, we should have a pass that walks all the TUs,
+/// detect their non-emitted referenced types, before hand.  Then,
+/// when we start emitting the TUs, we know for each TU which
+/// non-emitted referenced type should be emitted.  As we don't yet
+/// have such a pass, we do our best for now.
+///
 /// @return true upon successful completion, false otherwise.
 bool
-write_translation_unit(write_context&	       ctxt,
-		       const translation_unit& tu,
-		       const unsigned	       indent)
+write_translation_unit(write_context&		ctxt,
+		       const translation_unit&	tu,
+		       const unsigned		indent,
+		       bool			is_last)
 {
+  if (tu.is_empty() && !is_last)
+    return false;
+
+  if (is_last
+      && tu.is_empty()
+      && ctxt.has_non_emitted_referenced_types())
+    return false;
+
   ostream& o = ctxt.get_ostream();
   const config& c = ctxt.get_config();
 
@@ -2259,7 +2316,7 @@
       << translation_unit_language_to_string(tu.get_language())
       <<"'";
 
-  if (tu.is_empty())
+  if (tu.is_empty() && !is_last)
     {
       o << "/>\n";
       return true;
@@ -2271,161 +2328,53 @@
 				 ctxt, indent + c.get_xml_element_indent());
 
   typedef scope_decl::declarations declarations;
-  typedef declarations::const_iterator const_iterator;
-  const declarations& d = tu.get_global_scope()->get_sorted_member_decls();
+  const declarations& decls = tu.get_global_scope()->get_sorted_member_decls();
 
-  for (const_iterator i = d.begin(); i != d.end(); ++i)
+  for (const decl_base_sptr& decl : decls)
     {
-      if (type_base_sptr t = is_type(*i))
+      if (type_base_sptr t = is_type(decl))
 	{
-	  // Emit non-empty classes that are declaration-only. Those
-	  // beasts are class that only contain member types.
+	  // Emit declaration-only classes that are needed. Some of
+	  // these classes can be empty.  Those beasts can be classes
+	  // that only contain member types.  They can also be classes
+	  // considered "opaque".
 	  if (class_decl_sptr class_type = is_class_type(t))
 	    if (class_type->get_is_declaration_only()
-		&& !class_type->is_empty()
 		&& !ctxt.type_is_emitted(class_type))
 	      write_type(class_type, ctxt,
 			 indent + c.get_xml_element_indent());
-	  continue;
 	}
-
-      if (decl_base_sptr d = is_decl(*i))
-	if (ctxt.decl_is_emitted(d))
-	  continue;
-      write_decl(*i, ctxt, indent + c.get_xml_element_indent());
-    }
-
-  // Now let's handle types that were referenced, but not yet
-  // emitted because they are either:
-  //   1/ Types without canonical type
-  //   2/ or function types (these might have no scope).
-
-  // So this map of type -> string is to contain the referenced types
-  // we need to emit.
-  type_ptr_set_type referenced_types_to_emit;
-
-  for (type_ptr_set_type::const_iterator i =
-	 ctxt.get_referenced_types().begin();
-       i != ctxt.get_referenced_types().end();
-       ++i)
-    if (!ctxt.type_is_emitted(*i)
-	&& !ctxt.decl_only_type_is_emitted(*i))
-	referenced_types_to_emit.insert(*i);
-
-  for (fn_type_ptr_set_type::const_iterator i =
-	 ctxt.get_referenced_function_types().begin();
-       i != ctxt.get_referenced_function_types().end();
-       ++i)
-    if (!ctxt.type_is_emitted(*i)
-	&& !ctxt.decl_only_type_is_emitted(*i))
-      // A referenced type that was not emitted at all must be
-      // emitted now.
-      referenced_types_to_emit.insert(*i);
-
-  for (type_ptr_set_type::const_iterator i =
-	 ctxt.get_referenced_non_canonical_types().begin();
-       i != ctxt.get_referenced_non_canonical_types().end();
-       ++i)
-    if (!ctxt.type_is_emitted(*i)
-	&& !ctxt.decl_only_type_is_emitted(*i))
-      // A referenced type that was not emitted at all must be
-      // emitted now.
-      referenced_types_to_emit.insert(*i);
-
-  // Ok, now let's emit the referenced type for good.
-  while (!referenced_types_to_emit.empty())
-    {
-      // But first, we need to sort them, otherwise, emitting the ABI
-      // (in xml) of the same binary twice will yield different
-      // results, because we'd be walking an *unordered* hash table.
-      vector<type_base*> sorted_referenced_types;
-      ctxt.sort_types(referenced_types_to_emit,
-		      sorted_referenced_types);
-
-      // Clear the types recorded as referenced by the process of
-      // emitting the types out.  New types are going to be referenced
-      // the process of emitting the types below.
-      ctxt.clear_referenced_types();
-
-      // Now, emit the referenced decls in a sorted order.
-      for (vector<type_base*>::const_iterator i =
-	     sorted_referenced_types.begin();
-	   i != sorted_referenced_types.end();
-	   ++i)
+      else
 	{
-	  // We handle types which have declarations *and* function
-	  // types here.
-	  type_base_sptr t(*i, noop_deleter());
-	  if (!ctxt.type_is_emitted(t))
-	    {
-	      if (decl_base* d = get_type_declaration(*i))
-		{
-		  decl_base_sptr decl(d, noop_deleter());
-		  write_decl_in_scope(decl, ctxt,
-				      indent + c.get_xml_element_indent());
-		}
-	      else if (function_type_sptr fn_type = is_function_type(t))
-		write_function_type(fn_type, ctxt,
-				    indent + c.get_xml_element_indent());
-	      else
-		ABG_ASSERT_NOT_REACHED;
-	    }
+	  if (!ctxt.decl_is_emitted(decl))
+	    write_decl(decl, ctxt, indent + c.get_xml_element_indent());
 	}
-
-      // So all the (referenced) types that we wanted to emit were
-      // emitted.
-      referenced_types_to_emit.clear();
-
-      // But then, while emitting those referenced type, other types
-      // might have been referenced by those referenced types
-      // themselves!  So let's look at the sets of referenced type
-      // that are maintained for the entire ABI corpus and see if
-      // there are still some referenced types in there that are not
-      // emitted yet.  If yes, then we'll emit those again.
-
-      for (type_ptr_set_type::const_iterator i =
-	     ctxt.get_referenced_types().begin();
-	   i != ctxt.get_referenced_types().end();
-	   ++i)
-	if (!ctxt.type_is_emitted(*i)
-	    && !ctxt.decl_only_type_is_emitted(*i))
-	  // A referenced type that was not emitted at all must be
-	  // emitted now.
-	  referenced_types_to_emit.insert(*i);
-
-      for (type_ptr_set_type::const_iterator i =
-	     ctxt.get_referenced_non_canonical_types().begin();
-	   i != ctxt.get_referenced_non_canonical_types().end();
-	   ++i)
-	if (!ctxt.type_is_emitted(*i)
-	    && !ctxt.decl_only_type_is_emitted(*i))
-	  // A referenced type that was not emitted at all must be
-	  // emitted now.
-	  referenced_types_to_emit.insert(*i);
     }
 
+  write_referenced_types(ctxt, tu, indent, is_last);
+
   // Now handle all function types that were not only referenced by
   // emitted types.
-  const vector<function_type_sptr>& t = tu.get_live_fn_types();
-  vector<type_base_sptr> sorted_types;
-  ctxt.sort_types(t, sorted_types);
+  std::vector<type_base_sptr> sorted_types =
+    ctxt.sort_types(tu.get_live_fn_types());
 
-  for (vector<type_base_sptr>::const_iterator i = sorted_types.begin();
-       i != sorted_types.end();
-       ++i)
+  for (const type_base_sptr& t : sorted_types)
     {
-      function_type_sptr fn_type = is_function_type(*i);
+      function_type_sptr fn_type = is_function_type(t);
 
-      if (!ctxt.type_is_referenced(fn_type) || ctxt.type_is_emitted(fn_type))
-	// This function type is either not referenced by any emitted
-	// pointer or reference type, or has already been emitted, so skip it.
+      if (fn_type->get_is_artificial() || ctxt.type_is_emitted(fn_type))
+	// This function type is either already emitted or it's
+	// artificial (i.e, artificially created just to represent the
+	// conceptual type of a function), so skip it.
 	continue;
 
       ABG_ASSERT(fn_type);
       write_function_type(fn_type, ctxt, indent + c.get_xml_element_indent());
     }
 
-  ctxt.clear_referenced_types();
+  // After we've written out the live function types, we need to write
+  // the types they referenced.
+  write_referenced_types(ctxt, tu, indent, is_last);
 
   do_indent(o, indent);
   o << "</abi-instr>\n";
@@ -2505,7 +2454,7 @@
 
   typedef scope_decl::declarations		declarations;
   typedef declarations::const_iterator const_iterator;
-  const declarations& d = decl->get_member_decls();
+  const declarations& d = decl->get_sorted_member_decls();
 
   write_canonical_types_of_scope(*decl, ctxt,
 				 indent + c.get_xml_element_indent());
@@ -2530,14 +2479,6 @@
 ///
 /// @param decl the qualfied type declaration to write.
 ///
-/// @param id the type id identitifier to use in the serialized
-/// output.  If this is empty, the function will compute an
-/// appropriate one.  This is useful when this function is called to
-/// serialize the underlying type of a member type; in that case, the
-/// caller has already computed the id of the *member type*, and that
-/// id is the one to be written as the value of the 'id' attribute of
-/// the XML element of the underlying type.
-///
 /// @param ctxt the write context.
 ///
 /// @param indent the number of space to indent to during the
@@ -2546,9 +2487,8 @@
 /// @return true upon successful completion, false otherwise.
 static bool
 write_qualified_type_def(const qualified_type_def_sptr&	decl,
-			 const string&				id,
 			 write_context&			ctxt,
-			 unsigned				indent)
+			 unsigned			indent)
 {
   if (!decl)
     return false;
@@ -2576,33 +2516,13 @@
 
   write_location(static_pointer_cast<decl_base>(decl), ctxt);
 
-  string i = id;
-  if (i.empty())
-    i = ctxt.get_id_for_type(decl);
-
-  o << " id='" << i << "'/>\n";
+  o << " id='" << ctxt.get_id_for_type(decl) << "'/>\n";
 
   ctxt.record_type_as_emitted(decl);
 
   return true;
 }
 
-/// Serialize a qualified type declaration to an output stream.
-///
-/// @param decl the qualfied type declaration to write.
-///
-/// @param ctxt the write context.
-///
-/// @param indent the number of space to indent to during the
-/// serialization.
-///
-/// @return true upon successful completion, false otherwise.
-static bool
-write_qualified_type_def(const qualified_type_def_sptr&	decl,
-			 write_context&			ctxt,
-			 unsigned				indent)
-{return write_qualified_type_def(decl, "", ctxt, indent);}
-
 /// Serialize a pointer to an instance of pointer_type_def.
 ///
 /// @param decl the pointer_type_def to serialize.
@@ -2619,12 +2539,11 @@
 ///
 /// @param indent the number of indentation white spaces to use.
 ///
-/// @return true upon succesful completion, false otherwise.
+/// @return true upon successful completion, false otherwise.
 static bool
 write_pointer_type_def(const pointer_type_def_sptr&	decl,
-		       const string&			id,
 		       write_context&			ctxt,
-		       unsigned			indent)
+		       unsigned				indent)
 {
   if (!decl)
     return false;
@@ -2649,11 +2568,8 @@
 			    : decl->get_translation_unit()->get_address_size()),
 			   0);
 
-  string i = id;
-  if (i.empty())
-    i = ctxt.get_id_for_type(decl);
-
-  o << " id='" << i << "'";
+  string id = ctxt.get_id_for_type(decl);
+  o << " id='" << id << "'";
 
   write_location(static_pointer_cast<decl_base>(decl), ctxt);
   o << "/>\n";
@@ -2663,43 +2579,19 @@
   return true;
 }
 
-/// Serialize a pointer to an instance of pointer_type_def.
-///
-/// @param decl the pointer_type_def to serialize.
-///
-/// @param ctxt the context of the serialization.
-///
-/// @param indent the number of indentation white spaces to use.
-///
-/// @return true upon succesful completion, false otherwise.
-static bool
-write_pointer_type_def(const pointer_type_def_sptr&	decl,
-		       write_context&			ctxt,
-		       unsigned			indent)
-{return write_pointer_type_def(decl, "", ctxt, indent);}
-
 /// Serialize a pointer to an instance of reference_type_def.
 ///
 /// @param decl the reference_type_def to serialize.
 ///
-/// @param id the type id identitifier to use in the serialized
-/// output.  If this is empty, the function will compute an
-/// appropriate one.  This is useful when this function is called to
-/// serialize the underlying type of a member type; in that case, the
-/// caller has already computed the id of the *member type*, and that
-/// id is the one to be written as the value of the 'id' attribute of
-/// the XML element of the underlying type.
-///
 /// @param ctxt the context of the serialization.
 ///
 /// @param indent the number of indentation white spaces to use.
 ///
-/// @return true upon succesful completion, false otherwise.
+/// @return true upon successful completion, false otherwise.
 static bool
 write_reference_type_def(const reference_type_def_sptr&	decl,
-			 const string&				id,
 			 write_context&			ctxt,
-			 unsigned				indent)
+			 unsigned			indent)
 {
   if (!decl)
     return false;
@@ -2731,10 +2623,7 @@
 			    : decl->get_translation_unit()->get_address_size()),
 			   0);
 
-  string i = id;
-  if (i.empty())
-    i = ctxt.get_id_for_type(decl);
-  o << " id='" << i << "'";
+  o << " id='" << ctxt.get_id_for_type(decl) << "'";
 
   write_location(static_pointer_cast<decl_base>(decl), ctxt);
 
@@ -2745,21 +2634,6 @@
   return true;
 }
 
-/// Serialize a pointer to an instance of reference_type_def.
-///
-/// @param decl the reference_type_def to serialize.
-///
-/// @param ctxt the context of the serialization.
-///
-/// @param indent the number of indentation white spaces to use.
-///
-/// @return true upon succesful completion, false otherwise.
-static bool
-write_reference_type_def(const reference_type_def_sptr&	decl,
-			 write_context&			ctxt,
-			 unsigned				indent)
-{return write_reference_type_def(decl, "", ctxt, indent);}
-
 /// Serialize an instance of @ref array_type_def::subrange_type.
 ///
 /// @param decl the array_type_def::subrange_type to serialize.
@@ -2821,6 +2695,8 @@
 
   o << "/>\n";
 
+  ctxt.record_type_as_emitted(decl);
+
   return true;
 }
 
@@ -2828,22 +2704,13 @@
 ///
 /// @param decl the array_type_def to serialize.
 ///
-/// @param id the type id identitifier to use in the serialized
-/// output.  If this is empty, the function will compute an
-/// appropriate one.  This is useful when this function is called to
-/// serialize the underlying type of a member type; in that case, the
-/// caller has already computed the id of the *member type*, and that
-/// id is the one to be written as the value of the 'id' attribute of
-/// the XML element of the underlying type.
-///
 /// @param ctxt the context of the serialization.
 ///
 /// @param indent the number of indentation white spaces to use.
 ///
-/// @return true upon succesful completion, false otherwise.
+/// @return true upon successful completion, false otherwise.
 static bool
 write_array_type_def(const array_type_def_sptr&	decl,
-		     const string&			id,
 		     write_context&			ctxt,
 		     unsigned				indent)
 {
@@ -2866,10 +2733,7 @@
 
   write_array_size_and_alignment(decl, o);
 
-  string i = id;
-  if (i.empty())
-    i = ctxt.get_id_for_type(decl);
-  o << " id='" << i << "'";
+  o << " id='" << ctxt.get_id_for_type(decl) << "'";
 
   write_location(static_pointer_cast<decl_base>(decl), ctxt);
 
@@ -2898,47 +2762,25 @@
   return true;
 }
 
-/// Serialize a pointer to an instance of array_type_def.
-///
-/// @param decl the array_type_def to serialize.
-///
-/// @param ctxt the context of the serialization.
-///
-/// @param indent the number of indentation white spaces to use.
-///
-/// @return true upon succesful completion, false otherwise.
-static bool
-write_array_type_def(const array_type_def_sptr& decl,
-		     write_context&		ctxt,
-		     unsigned			indent)
-{return write_array_type_def(decl, "", ctxt, indent);}
-
 /// Serialize a pointer to an instance of enum_type_decl.
 ///
 /// @param decl the enum_type_decl to serialize.
 ///
-/// @param id the type id identitifier to use in the serialized
-/// output.  If this is empty, the function will compute an
-/// appropriate one.  This is useful when this function is called to
-/// serialize the underlying type of a member type; in that case, the
-/// caller has already computed the id of the *member type*, and that
-/// id is the one to be written as the value of the 'id' attribute of
-/// the XML element of the underlying type.
-///
 /// @param ctxt the context of the serialization.
 ///
 /// @param indent the number of indentation white spaces to use.
 ///
-/// @return true upon succesful completion, false otherwise.
+/// @return true upon successful completion, false otherwise.
 static bool
-write_enum_type_decl(const enum_type_decl_sptr& decl,
-		     const string&		id,
+write_enum_type_decl(const enum_type_decl_sptr& d,
 		     write_context&		ctxt,
 		     unsigned			indent)
 {
-  if (!decl)
+  if (!d)
     return false;
 
+  enum_type_decl_sptr decl = is_enum_type(look_through_decl_only_enum(d));
+
   annotate(decl->get_canonical_type(), ctxt, indent);
 
   ostream& o = ctxt.get_ostream();
@@ -2947,19 +2789,19 @@
   o << "<enum-decl name='" << xml::escape_xml_string(decl->get_name()) << "'";
 
   write_is_anonymous(decl, o);
+  write_naming_typedef(decl, ctxt);
   write_is_artificial(decl, o);
   write_is_non_reachable(is_type(decl), o);
 
   if (!decl->get_linkage_name().empty())
-    o << " linkage-name='" << decl->get_linkage_name() << "'";
+    o << " linkage-name='"
+      << xml::escape_xml_string(decl->get_linkage_name())
+      << "'";
 
   write_location(decl, ctxt);
   write_is_declaration_only(decl, o);
 
-  string i = id;
-  if (i.empty())
-    i = ctxt.get_id_for_type(decl);
-  o << " id='" << i << "'>\n";
+  o << " id='" << ctxt.get_id_for_type(decl) << "'>\n";
 
   do_indent(o, indent + ctxt.get_config().get_xml_element_indent());
   o << "<underlying-type type-id='"
@@ -2987,21 +2829,6 @@
   return true;
 }
 
-/// Serialize a pointer to an instance of enum_type_decl.
-///
-/// @param decl the enum_type_decl to serialize.
-///
-/// @param ctxt the context of the serialization.
-///
-/// @param indent the number of indentation white spaces to use.
-///
-/// @return true upon succesful completion, false otherwise.
-static bool
-write_enum_type_decl(const enum_type_decl_sptr& decl,
-		     write_context&		ctxt,
-		     unsigned			indent)
-{return write_enum_type_decl(decl, "", ctxt, indent);}
-
 /// Serialize an @ref elf_symbol to an XML element of name
 /// 'elf-symbol'.
 ///
@@ -3085,7 +2912,6 @@
   if (syms.empty())
     return false;
 
-  unordered_map<string, bool> emitted_syms;
   for (elf_symbols::const_iterator it = syms.begin(); it != syms.end(); ++it)
     write_elf_symbol(*it, ctxt, indent);
 
@@ -3126,22 +2952,13 @@
 ///
 /// @param decl the typedef_decl to serialize.
 ///
-/// @param id the type id identitifier to use in the serialized
-/// output.  If this is empty, the function will compute an
-/// appropriate one.  This is useful when this function is called to
-/// serialize the underlying type of a member type; in that case, the
-/// caller has already computed the id of the *member type*, and that
-/// id is the one to be written as the value of the 'id' attribute of
-/// the XML element of the underlying type.
-///
 /// @param ctxt the context of the serialization.
 ///
 /// @param indent the number of indentation white spaces to use.
 ///
-/// @return true upon succesful completion, false otherwise.
+/// @return true upon successful completion, false otherwise.
 static bool
 write_typedef_decl(const typedef_decl_sptr&	decl,
-		   const string&		id,
 		   write_context&		ctxt,
 		   unsigned			indent)
 {
@@ -3159,38 +2976,18 @@
     << "'";
 
   type_base_sptr underlying_type = decl->get_underlying_type();
-  string type_id = ctxt.get_id_for_type(underlying_type);
-  o << " type-id='" <<  type_id << "'";
+  o << " type-id='" << ctxt.get_id_for_type(underlying_type) << "'";
   ctxt.record_type_as_referenced(underlying_type);
 
   write_location(decl, ctxt);
 
-  string i = id;
-  if (i.empty())
-    i = ctxt.get_id_for_type(decl);
-
-  o << " id='" << i << "'/>\n";
+  o << " id='" << ctxt.get_id_for_type(decl) << "'/>\n";
 
   ctxt.record_type_as_emitted(decl);
 
   return true;
 }
 
-/// Serialize a pointer to an instance of typedef_decl.
-///
-/// @param decl the typedef_decl to serialize.
-///
-/// @param ctxt the context of the serialization.
-///
-/// @param indent the number of indentation white spaces to use.
-///
-/// @return true upon succesful completion, false otherwise.
-static bool
-write_typedef_decl(const typedef_decl_sptr&	decl,
-		   write_context&		ctxt,
-		   unsigned			indent)
-{return write_typedef_decl(decl, "", ctxt, indent);}
-
 /// Serialize a pointer to an instances of var_decl.
 ///
 /// @param decl the var_decl to serialize.
@@ -3202,7 +2999,7 @@
 ///
 /// @param indent the number of indentation white spaces to use.
 ///
-/// @return true upon succesful completion, false otherwise.
+/// @return true upon successful completion, false otherwise.
 static bool
 write_var_decl(const var_decl_sptr& decl, write_context& ctxt,
 	       bool write_linkage_name, unsigned indent)
@@ -3254,7 +3051,7 @@
 ///
 /// @param indent the number of indentation white spaces to use.
 ///
-/// @return true upon succesful completion, false otherwise.
+/// @return true upon successful completion, false otherwise.
 static bool
 write_function_decl(const function_decl_sptr& decl, write_context& ctxt,
 		    bool skip_first_parm, unsigned indent)
@@ -3353,7 +3150,7 @@
 ///
 /// @param indent the number of indentation white spaces to use.
 ///
-/// @return true upon succesful completion, false otherwise.
+/// @return true upon successful completion, false otherwise.
 static bool
 write_function_type(const function_type_sptr& fn_type,
 		    write_context& ctxt, unsigned indent)
@@ -3386,11 +3183,7 @@
 			       /*is_static=*/false, o);
     }
 
-  interned_string id = ctxt.get_id_for_type(fn_type);
-
-  o << " id='"
-    <<  id << "'"
-    << ">\n";
+  o << " id='" << ctxt.get_id_for_type(fn_type) << "'" << ">\n";
 
   type_base_sptr parm_type;
   for (vector<function_decl::parameter_sptr>::const_iterator pi =
@@ -3445,9 +3238,6 @@
 ///
 /// @param decl the class declaration to serialize.
 ///
-/// @param the type ID to use for the 'class-decl' element,, or empty
-/// if we need to build a new one.
-///
 /// @param ctxt the write context to use.
 ///
 /// @param indent the number of white space to use for indentation.
@@ -3460,7 +3250,6 @@
 /// @return true upon successful completion.
 static bool
 write_class_decl_opening_tag(const class_decl_sptr&	decl,
-			     const string&		id,
 			     write_context&		ctxt,
 			     unsigned			indent,
 			     bool			prepare_to_handle_members)
@@ -3500,10 +3289,7 @@
 	<< "'";
     }
 
-  string i = id;
-  if (i.empty())
-    i = ctxt.get_id_for_type(decl);
-  o << " id='" << i << "'";
+  o << " id='" << ctxt.get_id_for_type(decl) << "'";
 
   if (prepare_to_handle_members && decl->has_no_base_nor_member())
     o << "/>\n";
@@ -3517,9 +3303,6 @@
 ///
 /// @param decl the union declaration to serialize.
 ///
-/// @param the type ID to use for the 'union-decl' element, or empty
-/// if we need to build a new one.
-///
 /// @param ctxt the write context to use.
 ///
 /// @param indent the number of white space to use for indentation.
@@ -3532,7 +3315,6 @@
 /// @return true upon successful completion.
 static bool
 write_union_decl_opening_tag(const union_decl_sptr&	decl,
-			     const string&		id,
 			     write_context&		ctxt,
 			     unsigned			indent,
 			     bool			prepare_to_handle_members)
@@ -3551,6 +3333,8 @@
 
   write_is_anonymous(decl, o);
 
+  write_naming_typedef(decl, ctxt);
+
   write_visibility(decl, o);
 
   write_is_artificial(decl, o);
@@ -3561,10 +3345,7 @@
 
   write_is_declaration_only(decl, o);
 
-  string i = id;
-  if (i.empty())
-    i = ctxt.get_id_for_type(decl);
-  o << " id='" << i << "'";
+  o << " id='" << ctxt.get_id_for_type(decl) << "'";
 
   if (prepare_to_handle_members && decl->has_no_member())
     o << "/>\n";
@@ -3578,21 +3359,12 @@
 ///
 /// @param d the pointer to class_decl to serialize.
 ///
-/// @param id the type id identitifier to use in the serialized
-/// output.  If this is empty, the function will compute an
-/// appropriate one.  This is useful when this function is called to
-/// serialize the underlying type of a member type; in that case, the
-/// caller has already computed the id of the *member type*, and that
-/// id is the one to be written as the value of the 'id' attribute of
-/// the XML element of the underlying type.
-///
 /// @param ctxt the context of the serialization.
 ///
 /// @param indent the initial indentation to use.
 static bool
 write_class_decl(const class_decl_sptr& d,
-		 const string&		id,
-		 write_context&	ctxt,
+		 write_context&		ctxt,
 		 unsigned		indent)
 {
   if (!d)
@@ -3604,7 +3376,7 @@
 
   ostream& o = ctxt.get_ostream();
 
-  write_class_decl_opening_tag(decl, id, ctxt, indent,
+  write_class_decl_opening_tag(decl, ctxt, indent,
 			       /*prepare_to_handle_members=*/true);
 
   if (!decl->has_no_base_nor_member())
@@ -3770,31 +3542,11 @@
       o << "</class-decl>\n";
     }
 
-  // We allow several *declarations* of the same class in the corpus,
-  // but only one definition.
-  if (!decl->get_is_declaration_only())
-    ctxt.record_type_as_emitted(decl);
-  else
-    ctxt.record_decl_only_type_as_emitted(decl);
+  ctxt.record_type_as_emitted(decl);
 
   return true;
 }
 
-/// Serialize a class_decl type.
-///
-/// @param decl the pointer to class_decl to serialize.
-///
-/// @param ctxt the context of the serialization.
-///
-/// @param indent the initial indentation to use.
-///
-/// @return true upon successful completion.
-static bool
-write_class_decl(const class_decl_sptr& decl,
-		 write_context&	ctxt,
-		 unsigned		indent)
-{return write_class_decl(decl, "", ctxt, indent);}
-
 /// Serialize a @ref union_decl type.
 ///
 /// @param d the pointer to @ref union_decl to serialize.
@@ -3806,7 +3558,6 @@
 /// @return true upon successful completion.
 static bool
 write_union_decl(const union_decl_sptr& d,
-		 const string& id,
 		 write_context& ctxt,
 		 unsigned indent)
 {
@@ -3819,7 +3570,7 @@
 
   ostream& o = ctxt.get_ostream();
 
-  write_union_decl_opening_tag(decl, id, ctxt, indent,
+  write_union_decl_opening_tag(decl, ctxt, indent,
 			       /*prepare_to_handle_members=*/true);
   if (!decl->has_no_member())
     {
@@ -3828,7 +3579,11 @@
 	     decl->get_member_types().begin();
 	   ti != decl->get_member_types().end();
 	   ++ti)
-	write_member_type(*ti, ctxt, nb_ws);
+	if (!(*ti)->get_naked_canonical_type())
+	  write_member_type(*ti, ctxt, nb_ws);
+
+      write_canonical_types_of_scope(*decl, ctxt, nb_ws,
+				     /*is_member_type=*/true);
 
       for (union_decl::data_members::const_iterator data =
 	     decl->get_data_members().begin();
@@ -3926,22 +3681,11 @@
       o << "</union-decl>\n";
     }
 
-  // We allow several *declarations* of the same union in the corpus,
-  // but only one definition.
-  if (!decl->get_is_declaration_only())
-    ctxt.record_type_as_emitted(decl);
-  else
-    ctxt.record_decl_only_type_as_emitted(decl);
+  ctxt.record_type_as_emitted(decl);
 
   return true;
 }
 
-static bool
-write_union_decl(const union_decl_sptr& decl,
-		 write_context& ctxt,
-		 unsigned indent)
-{return write_union_decl(decl, "", ctxt, indent);}
-
 /// Write the opening tag for a 'member-type' element.
 ///
 /// @param t the member type to consider.
@@ -3972,11 +3716,6 @@
 
 /// Serialize a member type.
 ///
-/// Note that the id written as the value of the 'id' attribute of the
-/// underlying type is actually the id of the member type, not the one
-/// for the underying type.  That id takes in account, the access
-/// specifier and the qualified name of the member type.
-///
 /// @param decl the declaration of the member type to serialize.
 ///
 /// @param ctxt the write context to use.
@@ -3992,25 +3731,23 @@
 
   write_member_type_opening_tag(t, ctxt, indent);
 
-  string id = ctxt.get_id_for_type(t);
-
   unsigned nb_ws = get_indent_to_level(ctxt, indent, 1);
   ABG_ASSERT(write_qualified_type_def(dynamic_pointer_cast<qualified_type_def>(t),
-				  id, ctxt, nb_ws)
+				  ctxt, nb_ws)
 	 || write_pointer_type_def(dynamic_pointer_cast<pointer_type_def>(t),
-				   id, ctxt, nb_ws)
+				   ctxt, nb_ws)
 	 || write_reference_type_def(dynamic_pointer_cast<reference_type_def>(t),
-				     id, ctxt, nb_ws)
+				     ctxt, nb_ws)
 	 || write_array_type_def(dynamic_pointer_cast<array_type_def>(t),
-			         id, ctxt, nb_ws)
+				 ctxt, nb_ws)
 	 || write_enum_type_decl(dynamic_pointer_cast<enum_type_decl>(t),
-				 id, ctxt, nb_ws)
+				 ctxt, nb_ws)
 	 || write_typedef_decl(dynamic_pointer_cast<typedef_decl>(t),
-			       id, ctxt, nb_ws)
+			       ctxt, nb_ws)
 	 || write_union_decl(dynamic_pointer_cast<union_decl>(t),
-			     id, ctxt, nb_ws)
+			     ctxt, nb_ws)
 	 || write_class_decl(dynamic_pointer_cast<class_decl>(t),
-			     id, ctxt, nb_ws));
+			     ctxt, nb_ws));
 
   do_indent_to_level(ctxt, indent, 0);
   o << "</member-type>\n";
@@ -4045,7 +3782,7 @@
     id_attr_name = "id";
 
   o << "<template-type-parameter "
-    << id_attr_name << "='" <<  ctxt.get_id_for_type(decl) << "'";
+    << id_attr_name << "='" << ctxt.get_id_for_type(decl) << "'";
 
   std::string name = xml::escape_xml_string(decl->get_name ());
   if (!name.empty())
@@ -4434,19 +4171,23 @@
     }
 
   // Now write the translation units.
+  unsigned nb_tus = corpus->get_translation_units().size(), n = 0;
   for (translation_units::const_iterator i =
 	 corpus->get_translation_units().begin();
        i != corpus->get_translation_units().end();
-       ++i)
+       ++i, ++n)
     {
       translation_unit& tu = **i;
-      if (!tu.is_empty())
-	write_translation_unit(ctxt, tu, get_indent_to_level(ctxt, indent, 1));
+      write_translation_unit(ctxt, tu,
+			     get_indent_to_level(ctxt, indent, 1),
+			     n == nb_tus - 1);
     }
 
   do_indent_to_level(ctxt, indent, 0);
   out << "</abi-corpus>\n";
 
+  ctxt.clear_referenced_types();
+
   return true;
 }
 
@@ -4689,5 +4430,106 @@
 dump_decl_location(const decl_base_sptr d)
 {dump_decl_location(d.get());}
 
+#ifdef WITH_DEBUG_SELF_COMPARISON
+/// Write one of the records of the "type-ids" debugging file.
+///
+/// This is a sub-routine of write_canonical_type_ids.
+///
+/// @param ctxt the context to use.
+///
+/// @param type the type which canonical type pointer value to emit.
+///
+/// @param o the output stream to write to.
+static void
+write_type_record(xml_writer::write_context&	ctxt,
+		  const type_base*		type,
+		  ostream&			o)
+{
+  // We want to serialize a type record which content looks like:
+  //
+  //     <type>
+  //       <id>type-id-573</id>
+  //       <c>0x262ee28</c>
+  //     </type>
+  //     <type>
+  //       <id>type-id-569</id>
+  //       <c>0x2628298</c>
+  //     </type>
+  //     <type>
+  //       <id>type-id-575</id>
+  //       <c>0x25f9ba8</c>
+  //     </type>
+
+  string id = ctxt.get_id_for_type (type);
+  o << "  <type>\n"
+    << "    <id>" << id << "</id>\n"
+    << "    <c>"
+    << std::hex
+    << (type->get_canonical_type()
+	? reinterpret_cast<uintptr_t>(type->get_canonical_type().get())
+	: 0xdeadbabe)
+    << "</c>\n"
+    << "  </type>\n";
+}
+
+/// Serialize the map that is stored at
+/// environment::get_type_id_canonical_type_map() to an output stream.
+///
+/// This is for debugging purposes and is triggered ultimately by
+/// invoking the command 'abidw --debug-abidiff <binary>'.
+///
+/// @param ctxt the write context.
+///
+/// @param o the output stream to serialize the map to.
+void
+write_canonical_type_ids(xml_writer::write_context& ctxt, ostream& o)
+{
+  // We want to serialize a file which content looks like:
+  //
+  // <abixml-types-check>
+  //     <type>
+  //       <id>type-id-573</id>
+  //       <c>0x262ee28</c>
+  //     </type>
+  //     <type>
+  //       <id>type-id-569</id>
+  //       <c>0x2628298</c>
+  //     </type>
+  //     <type>
+  //       <id>type-id-575</id>
+  //       <c>0x25f9ba8</c>
+  //     </type>
+  // <abixml-types-check>
+
+  o << "<abixml-types-check>\n";
+
+  for (const auto &type : ctxt.get_emitted_types_set())
+    write_type_record(ctxt, type, o);
+
+  o << "</abixml-types-check>\n";
+}
+
+/// Serialize the map that is stored at
+/// environment::get_type_id_canonical_type_map() to a file.
+///
+/// This is for debugging purposes and is triggered ultimately by
+/// invoking the command 'abidw --debug-abidiff <binary>'.
+///
+/// @param ctxt the write context.
+///
+/// @param file_path the file to serialize the map to.
+bool
+write_canonical_type_ids(xml_writer::write_context& ctxt,
+			const string &file_path)
+{
+  std:: ofstream o (file_path);
+
+  if (!o.is_open())
+    return true;
+  write_canonical_type_ids(ctxt, o);
+  o.close();
+  return true;
+}
+#endif
 // </Debugging routines>
 } //end namespace abigail
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7a3a1f9..17e2d4b 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -25,6 +25,10 @@
 runtestreaddwarf	        \
 runtestcanonicalizetypes.sh
 
+if CTF_READER
+TESTS += runtestreadctf
+endif
+
 # rather cheap tests
 TESTS+=				\
 runtestabicompat		\
@@ -72,7 +76,7 @@
 
 noinst_PROGRAMS= $(TESTS) testirwalker testdiff2 printdifftree
 noinst_SCRIPTS = mockfedabipkgdiff
-noinst_LTLIBRARIES = libtestutils.la libcatch.la
+noinst_LTLIBRARIES = libtestutils.la libtestreadcommon.la libcatch.la
 
 libtestutils_la_SOURCES=	\
 test-utils.h 			\
@@ -82,15 +86,31 @@
 -DABIGAIL_SRC_DIR=\"${abs_top_srcdir}\"  	\
 -DABIGAIL_BUILD_DIR=\"${abs_top_builddir}\"
 
+libtestreadcommon_la_SOURCES=	\
+test-read-common.h 		\
+test-read-common.cc
+
+libtestreadcommon_la_CXXFLAGS=			\
+-DABIGAIL_SRC_DIR=\"${abs_top_srcdir}\"  	\
+-DABIGAIL_BUILD_DIR=\"${abs_top_builddir}\"
+
 libcatch_la_SOURCES = lib/catch.cc lib/catch.hpp
 
 runtestreadwrite_SOURCES=test-read-write.cc
 runtestreadwrite_LDADD=libtestutils.la $(top_builddir)/src/libabigail.la
 
 runtestreaddwarf_SOURCES=test-read-dwarf.cc
-runtestreaddwarf_LDADD=libtestutils.la $(top_builddir)/src/libabigail.la
+runtestreaddwarf_LDADD=libtestreadcommon.la libtestutils.la	\
+		       $(top_builddir)/src/libabigail.la
 runtestreaddwarf_LDFLAGS=-pthread
 
+if CTF_READER
+runtestreadctf_SOURCES=test-read-ctf.cc
+runtestreadctf_LDADD=libtestreadcommon.la libtestutils.la	\
+		     $(top_builddir)/src/libabigail.la
+runtestreadctf_LDFLAGS=-pthread
+endif
+
 runtestannotate_SOURCES=test-annotate.cc
 runtestannotate_LDADD=libtestutils.la $(top_builddir)/src/libabigail.la
 
@@ -154,9 +174,6 @@
 runtestsvg_SOURCES=test-svg.cc
 runtestsvg_LDADD=$(top_builddir)/src/libabigail.la
 
-runtestdot_SOURCES = test-dot.cc
-runtestdot_LDADD = $(top_builddir)/src/libabigail.la
-
 testirwalker_SOURCES=test-ir-walker.cc
 testirwalker_LDADD=$(top_builddir)/src/libabigail.la
 
diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am
index ee609b2..6bc9f34 100644
--- a/tests/data/Makefile.am
+++ b/tests/data/Makefile.am
@@ -91,6 +91,18 @@
 test-abidiff/test-crc-1.xml \
 test-abidiff/test-crc-2.xml \
 test-abidiff/test-crc-report.txt \
+test-abidiff/test-PR27985-report.txt	 \
+test-abidiff/test-PR27985-v0.c		 \
+test-abidiff/test-PR27985-v0.o		 \
+test-abidiff/test-PR27985-v0.o.abi	 \
+test-abidiff/test-PR27985-v1.c		 \
+test-abidiff/test-PR27985-v1.o		 \
+test-abidiff/test-PR27985-v1.o.abi	 \
+test-abidiff-exit/test-PR28316-v0.cc     \
+test-abidiff-exit/test-PR28316-v1.cc     \
+test-abidiff-exit/test-PR28316-v0.o      \
+test-abidiff-exit/test-PR28316-v1.o      \
+test-abidiff-exit/test-PR28316-report.txt \
 \
 test-abidiff-exit/test1-voffset-change-report0.txt \
 test-abidiff-exit/test1-voffset-change-report1.txt \
@@ -207,6 +219,10 @@
 test-abidiff-exit/test-missing-alias-report.txt \
 test-abidiff-exit/test-missing-alias.abi \
 test-abidiff-exit/test-missing-alias.suppr \
+test-abidiff/test-PR27616-squished-v0.abi \
+test-abidiff/test-PR27616-squished-v1.abi \
+test-abidiff/test-PR27616-v0.xml \
+test-abidiff/test-PR27616-v1.xml \
 \
 test-diff-dwarf/test0-v0.cc		\
 test-diff-dwarf/test0-v0.o			\
@@ -442,6 +458,31 @@
 test-diff-dwarf/PR25058-liblttng-ctl.so \
 test-diff-dwarf/PR25058-liblttng-ctl2.10.so \
 \
+test-read-common/test3.c		\
+test-read-common/test3.so		\
+test-read-common/test3-alias-1.suppr	\
+test-read-common/test3-alias-2.suppr	\
+test-read-common/test3-alias-3.suppr	\
+test-read-common/test3-alias-4.suppr	\
+test-read-common/test4.c		\
+test-read-common/test4.so		\
+test-read-common/PR26261/Makefile	\
+test-read-common/PR26261/PR26261-obja.c	\
+test-read-common/PR26261/PR26261-objb.c	\
+test-read-common/PR26261/PR26261-exe	\
+test-read-common/PR26261/PR26261-main.c	\
+test-read-common/PR26261/PR26261-obja.h	\
+test-read-common/PR26261/PR26261-objb.h	\
+test-read-common/test-PR26568-1.c	\
+test-read-common/test-PR26568-2.c	\
+test-read-common/test-PR26568-2.o	\
+test-read-common/test-PR26568-1.o	\
+test-read-common/PR27700/include-dir/priv.h	\
+test-read-common/PR27700/include-dir/pub.h	\
+test-read-common/PR27700/pub-incdir/inc.h	\
+test-read-common/PR27700/test-PR27700.c	\
+test-read-common/PR27700/test-PR27700.o	\
+\
 test-read-dwarf/test0			\
 test-read-dwarf/test0.abi			\
 test-read-dwarf/test0.hash.abi		\
@@ -456,20 +497,12 @@
 test-read-dwarf/test2.so		\
 test-read-dwarf/test2.so.abi		\
 test-read-dwarf/test2.so.hash.abi	\
-test-read-dwarf/test3.c		\
-test-read-dwarf/test3.so		\
 test-read-dwarf/test3.so.abi		\
 test-read-dwarf/test3.so.hash.abi	\
 test-read-dwarf/test3-alias-1.so.hash.abi \
-test-read-dwarf/test3-alias-1.suppr \
 test-read-dwarf/test3-alias-2.so.hash.abi \
-test-read-dwarf/test3-alias-2.suppr \
 test-read-dwarf/test3-alias-3.so.hash.abi \
-test-read-dwarf/test3-alias-3.suppr \
 test-read-dwarf/test3-alias-4.so.hash.abi \
-test-read-dwarf/test3-alias-4.suppr \
-test-read-dwarf/test4.c		\
-test-read-dwarf/test4.so		\
 test-read-dwarf/test4.so.abi		\
 test-read-dwarf/test4.so.hash.abi	\
 test-read-dwarf/test5.cc		\
@@ -537,18 +570,7 @@
 test-read-dwarf/test25-bogus-binary.elf \
 test-read-dwarf/test26-bogus-binary.elf \
 test-read-dwarf/test27-bogus-binary.elf \
-test-read-dwarf/PR26261/Makefile \
 test-read-dwarf/PR26261/PR26261-exe.abi \
-test-read-dwarf/PR26261/PR26261-obja.c \
-test-read-dwarf/PR26261/PR26261-objb.c \
-test-read-dwarf/PR26261/PR26261-exe \
-test-read-dwarf/PR26261/PR26261-main.c \
-test-read-dwarf/PR26261/PR26261-obja.h \
-test-read-dwarf/PR26261/PR26261-objb.h \
-test-read-dwarf/test-PR26568-1.c     \
-test-read-dwarf/test-PR26568-2.c     \
-test-read-dwarf/test-PR26568-2.o     \
-test-read-dwarf/test-PR26568-1.o     \
 test-read-dwarf/test-PR26568-1.o.abi \
 test-read-dwarf/test-PR26568-2.o.abi \
 test-read-dwarf/test-libandroid.so \
@@ -557,6 +579,94 @@
 test-read-dwarf/test-suppressed-alias.o \
 test-read-dwarf/test-suppressed-alias.o.abi \
 test-read-dwarf/test-suppressed-alias.suppr \
+test-read-dwarf/PR27700/test-PR27700.abi  \
+test-read-dwarf/test-libaaudio.so       \
+test-read-dwarf/test-libaaudio.so.abi   \
+test-read-dwarf/PR28584/PR28584-smv.cc  \
+test-read-dwarf/PR28584/PR28584-smv.clang.o \
+test-read-dwarf/PR28584/PR28584-smv.clang.o.abi \
+\
+test-read-ctf/test0		\
+test-read-ctf/test0.abi		\
+test-read-ctf/test0.c		\
+test-read-ctf/test0.hash.abi	\
+test-read-ctf/test1.c		\
+test-read-ctf/test1.so		\
+test-read-ctf/test1.so.abi	\
+test-read-ctf/test1.so.hash.abi	\
+test-read-ctf/test2.c		\
+test-read-ctf/test2.so		\
+test-read-ctf/test2.so.abi	\
+test-read-ctf/test2.so.hash.abi	\
+test-read-ctf/test3.so.abi	\
+test-read-ctf/test3.so.hash.abi	\
+test-read-ctf/test4.so.abi	\
+test-read-ctf/test4.so.hash.abi	\
+test-read-ctf/test5.c		\
+test-read-ctf/test5.o		\
+test-read-ctf/test5.o.abi	\
+test-read-ctf/test6.c		\
+test-read-ctf/test6.o.abi	\
+test-read-ctf/test7.c		\
+test-read-ctf/test7.h		\
+test-read-ctf/test7.o		\
+test-read-ctf/test7.o.abi	\
+test-read-ctf/test8.c		\
+test-read-ctf/test8.o		\
+test-read-ctf/test8.o.abi	\
+test-read-ctf/test9.c		\
+test-read-ctf/test9.o		\
+test-read-ctf/test9.o.abi	\
+test-read-ctf/test-alias.c	\
+test-read-ctf/test-alias.o.abi	\
+test-read-ctf/test-ambiguous-struct-A.c	\
+test-read-ctf/test-ambiguous-struct-A.o	\
+test-read-ctf/test-ambiguous-struct-A.o.hash.abi	 \
+test-read-ctf/test-ambiguous-struct-B.c		\
+test-read-ctf/test-ambiguous-struct-B.o		\
+test-read-ctf/test-ambiguous-struct-B.o.hash.abi	\
+test-read-ctf/test-conflicting-type-syms-a.c		\
+test-read-ctf/test-conflicting-type-syms-a.o		\
+test-read-ctf/test-conflicting-type-syms-a.o.hash.abi	\
+test-read-ctf/test-conflicting-type-syms-b.c		\
+test-read-ctf/test-conflicting-type-syms-b.o		\
+test-read-ctf/test-conflicting-type-syms-b.o.hash.abi	\
+test-read-ctf/test-dynamic-array.c	\
+test-read-ctf/test-dynamic-array.o	\
+test-read-ctf/test-dynamic-array.o.abi	\
+test-read-ctf/test-enum.c		\
+test-read-ctf/test-enum-many.c		\
+test-read-ctf/test-enum-many.o		\
+test-read-ctf/test-enum-many.o.hash.abi		\
+test-read-ctf/test-enum.o		\
+test-read-ctf/test-enum.o.abi		\
+test-read-ctf/test-enum-symbol.c		\
+test-read-ctf/test-enum-symbol.o		\
+test-read-ctf/test-enum-symbol.o.hash.abi	\
+test-read-ctf/test-PR26568-1.o.abi		\
+test-read-ctf/test-PR26568-2.o.abi		\
+test-read-ctf/test-struct-iteration.c		\
+test-read-ctf/test-struct-iteration.o.abi	\
+test-read-ctf/PR27700/test-PR27700.abi	\
+test-read-ctf/PR26261/PR26261-exe.abi	\
+test-read-ctf/test-callback.c		\
+test-read-ctf/test-callback.abi		\
+test-read-ctf/test-callback.o		\
+test-read-ctf/test-array-of-pointers.c	\
+test-read-ctf/test-array-of-pointers.o	\
+test-read-ctf/test-array-of-pointers.abi	\
+test-read-ctf/test-functions-declaration.abi	\
+test-read-ctf/test-functions-declaration.c	\
+test-read-ctf/test-functions-declaration.o	\
+test-read-ctf/test-forward-type-decl.abi	\
+test-read-ctf/test-forward-type-decl.o	\
+test-read-ctf/test-forward-type-decl.c	\
+test-read-ctf/test-list-struct.c	\
+test-read-ctf/test-list-struct.o	\
+test-read-ctf/test-list-struct.abi	\
+test-read-ctf/test-callback2.c		\
+test-read-ctf/test-callback2.o		\
+test-read-ctf/test-callback2.abi	\
 \
 test-annotate/test0.abi			\
 test-annotate/test1.abi			\
@@ -593,6 +703,9 @@
 test-types-stability/pr19204-libtcmalloc.so.4.2.6-xlc \
 test-types-stability/PR27165-libzmq.so.5.2.3 \
 test-types-stability/PR27165-libzmq.so.5.2.3.debug \
+test-types-stability/pr27980-libc.so \
+test-types-stability/PR27086-libstdc++.so.6.0.26 \
+test-types-stability/PR28450-libepetra.so.13.0 \
 \
 test-diff-filter/test0-v0.cc		\
 test-diff-filter/test0-v1.cc		\
@@ -954,6 +1067,8 @@
 test-diff-filter/test-PR27598-v1.cc          \
 test-diff-filter/test-PR27598-v1.o           \
 test-diff-filter/test-PR27598-report-0.txt   \
+test-diff-filter/test-PR27995-report-0.txt   \
+test-diff-filter/test-PR27995.abi	     \
 \
 test-diff-suppr/test0-type-suppr-v0.cc	\
 test-diff-suppr/test0-type-suppr-v1.cc	\
@@ -1519,6 +1634,17 @@
 test-diff-suppr/PR27267/libtestpr27267-v0.so \
 test-diff-suppr/PR27267/libtestpr27267-v1.so \
 test-diff-suppr/PR27267/report-1.txt \
+test-diff-suppr/PR28073/PR28073-bitfield-removed.c \
+test-diff-suppr/PR28073/PR28073-bitfield-removed.o \
+test-diff-suppr/PR28073/PR28073-bitfield-removed.o.abi \
+test-diff-suppr/PR28073/PR28073-output-1.txt \
+test-diff-suppr/PR28073/PR28073-output-2.txt \
+test-diff-suppr/PR28073/PR28073.after.o \
+test-diff-suppr/PR28073/PR28073.after.o.abi \
+test-diff-suppr/PR28073/PR28073.before.o \
+test-diff-suppr/PR28073/PR28073.before.o.abi \
+test-diff-suppr/PR28073/PR28073.c \
+test-diff-suppr/PR28073/bitfield.suppr \
 \
 test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1 \
 test-diff-dwarf-abixml/test0-pr19026-libvtkIOSQL-6.1.so.1.abi \
@@ -1843,6 +1969,21 @@
 test-diff-pkg/elfutils-libs-0.183-1.el9.x86_64.rpm \
 test-diff-pkg/elfutils-libs-debuginfo-0.183-1.el9.x86_64.rpm \
 test-diff-pkg/elfutils-debuginfo-0.183-1.el9.x86_64.rpm \
+test-diff-pkg/graphviz-2.44.0-18.el9.aarch64-self-check-report-0.txt \
+test-diff-pkg/graphviz-2.44.0-18.el9.aarch64.rpm \
+test-diff-pkg/graphviz-debuginfo-2.44.0-18.el9.aarch64.rpm \
+test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-4.1.1-6.el8.x86_64-output-1.txt \
+test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-compat-4.4.18-3.el9.x86_64-report-1.txt \
+test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64.rpm \
+test-diff-pkg/libxcrypt-4.4.18-3.el9.x86_64.rpm \
+test-diff-pkg/libxcrypt-compat-4.4.18-3.el9.x86_64.rpm \
+test-diff-pkg/libxcrypt-compat-debuginfo-4.4.18-3.el9.x86_64.rpm \
+test-diff-pkg/libxcrypt-debuginfo-4.1.1-6.el8.x86_64.rpm \
+test-diff-pkg/libxcrypt-debuginfo-4.4.18-3.el9.x86_64.rpm \
+test-diff-pkg/wireshark/wireshark-cli-3.4.9-1.fc36.x86_64-self-check-report.txt \
+test-diff-pkg/wireshark/wireshark-cli-3.4.9-1.fc36.x86_64.rpm \
+test-diff-pkg/wireshark/wireshark-cli-debuginfo-3.4.9-1.fc36.x86_64.rpm \
+test-diff-pkg/wireshark/wireshark-debuginfo-3.4.9-1.fc36.x86_64.rpm \
 \
 test-fedabipkgdiff/dbus-glib-0.104-3.fc23.x86_64.rpm \
 test-fedabipkgdiff/dbus-glib-debuginfo-0.104-3.fc23.x86_64.rpm \
diff --git a/tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt b/tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt
index 8105aa7..e9bf3d4 100644
--- a/tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt
+++ b/tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt
@@ -13,12 +13,14 @@
               array element type 'void*' changed:
                 entity changed from 'void*' to 'void* const'
                 type size hasn't changed
+              type name changed from 'void*[7]' to 'void* const[7]'
               type size hasn't changed
           type of 'A v_a' changed:
             entity changed from 'typedef A' to compatible type 'void* volatile[7]'
               array element type 'void*' changed:
                 entity changed from 'void*' to 'void* volatile'
                 type size hasn't changed
+              type name changed from 'void*[7]' to 'void* volatile[7]'
               type size hasn't changed
           type of 'A r_a' changed:
             entity changed from 'typedef A' to compatible type 'void*[7]'
@@ -29,6 +31,7 @@
                 array element type 'void*' changed:
                   entity changed from 'void*' to 'void* const'
                   type size hasn't changed
+                type name changed from 'void*[7]' to 'void* const[7]'
                 type size hasn't changed
           type of 'B v_b' changed:
             typedef name changed from B to A at qualifier-typedef-array-v1.c:1:1
@@ -37,6 +40,7 @@
                 array element type 'void*' changed:
                   entity changed from 'void*' to 'void* volatile'
                   type size hasn't changed
+                type name changed from 'void*[7]' to 'void* volatile[7]'
                 type size hasn't changed
           type of 'B r_b' changed:
             typedef name changed from B to A at qualifier-typedef-array-v1.c:1:1
@@ -46,36 +50,36 @@
             entity changed from 'typedef C' to compatible type 'const volatile void* const[7]'
               array element type 'void* const' changed:
                 'void* const' changed to 'const volatile void* const'
-              type name changed from 'void*[7]' to 'volatile void* const[7]'
+              type name changed from 'void* const[7]' to 'volatile void* const[7]'
               type size hasn't changed
           type of 'C r_c' changed:
             entity changed from 'typedef C' to compatible type 'restrict void* const[7]'
               array element type 'void* const' changed:
                 'void* const' changed to 'restrict const void* const'
-              type name changed from 'void*[7]' to 'restrict void* const[7]'
+              type name changed from 'void* const[7]' to 'restrict void* const[7]'
               type size hasn't changed
           type of 'D v_d' changed:
             entity changed from 'typedef D' to compatible type 'const volatile void* const[7]'
               array element type 'void* const' changed:
                 'void* const' changed to 'const volatile void* const'
-              type name changed from 'void*[7]' to 'volatile void* const[7]'
+              type name changed from 'void* const[7]' to 'volatile void* const[7]'
               type size hasn't changed
           type of 'D r_d' changed:
             entity changed from 'typedef D' to compatible type 'restrict void* const[7]'
               array element type 'void* const' changed:
                 'void* const' changed to 'restrict const void* const'
-              type name changed from 'void*[7]' to 'restrict void* const[7]'
+              type name changed from 'void* const[7]' to 'restrict void* const[7]'
               type size hasn't changed
           type of 'E r_e' changed:
             entity changed from 'typedef E' to compatible type 'restrict const volatile void* const[7]'
               array element type 'const volatile void* const' changed:
                 'const volatile void* const' changed to 'restrict const volatile volatile void* const'
-              type name changed from 'volatile void* const[7]' to 'restrict volatile void* const[7]'
+              type name changed from 'volatile void* const[7]' to 'restrict const volatile void* const[7]'
               type size hasn't changed
           type of 'F r_f' changed:
             entity changed from 'typedef F' to compatible type 'restrict const volatile void* const[7]'
               array element type 'const volatile void* const' changed:
                 'const volatile void* const' changed to 'restrict const volatile volatile void* const'
-              type name changed from 'volatile void* const[7]' to 'restrict volatile void* const[7]'
+              type name changed from 'volatile void* const[7]' to 'restrict const volatile void* const[7]'
               type size hasn't changed
 
diff --git a/tests/data/test-abidiff-exit/test-PR28316-report.txt b/tests/data/test-abidiff-exit/test-PR28316-report.txt
new file mode 100644
index 0000000..b08073f
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-PR28316-report.txt
@@ -0,0 +1,12 @@
+Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+1 function with some indirect sub-type change:
+
+  [C] 'function void foo(E)' at test-PR28316-v1.cc:9:1 has some indirect sub-type changes:
+    parameter 1 of type 'typedef E' has sub-type changes:
+      underlying type 'enum E' at test-PR28316-v0.cc:1:1 changed:
+        type size hasn't changed
+        1 enumerator insertion:
+          'E::v3' value '3'
+
diff --git a/tests/data/test-abidiff-exit/test-PR28316-v0.cc b/tests/data/test-abidiff-exit/test-PR28316-v0.cc
new file mode 100644
index 0000000..82c45ea
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-PR28316-v0.cc
@@ -0,0 +1,10 @@
+typedef enum {
+  v0,
+  v1,
+  v2
+} E;
+
+void
+foo(E)
+{
+}
diff --git a/tests/data/test-abidiff-exit/test-PR28316-v0.o b/tests/data/test-abidiff-exit/test-PR28316-v0.o
new file mode 100644
index 0000000..c5efd3a
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-PR28316-v0.o
Binary files differ
diff --git a/tests/data/test-abidiff-exit/test-PR28316-v1.cc b/tests/data/test-abidiff-exit/test-PR28316-v1.cc
new file mode 100644
index 0000000..4886fdc
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-PR28316-v1.cc
@@ -0,0 +1,11 @@
+typedef enum {
+  v0,
+  v1,
+  v2,
+  v3
+} E;
+
+void
+foo(E)
+{
+}
diff --git a/tests/data/test-abidiff-exit/test-PR28316-v1.o b/tests/data/test-abidiff-exit/test-PR28316-v1.o
new file mode 100644
index 0000000..e02bcc4
--- /dev/null
+++ b/tests/data/test-abidiff-exit/test-PR28316-v1.o
Binary files differ
diff --git a/tests/data/test-abidiff-exit/test-member-size-report0.txt b/tests/data/test-abidiff-exit/test-member-size-report0.txt
index 1c60dbc..5c8ece6 100644
--- a/tests/data/test-abidiff-exit/test-member-size-report0.txt
+++ b/tests/data/test-abidiff-exit/test-member-size-report0.txt
@@ -13,8 +13,7 @@
     parameter 2 of type 'T*' has sub-type changes:
       in pointed to type 'struct T' at test-member-size-v1.cc:14:1:
         type size changed from 192 to 256 (in bits)
-        2 data member changes:
-          'S s' size changed from 128 to 192 (in bits) (by +64 bits)
+        1 data member changes (1 filtered):
           'int a' offset changed from 128 to 192 (in bits) (by +64 bits)
 
   [C] 'function void reg2(U*)' at test-member-size-v1.cc:27:1 has some indirect sub-type changes:
@@ -24,7 +23,6 @@
         2 data member changes:
           type of 'anonymous data member struct {S s;}' changed:
             type size changed from 128 to 192 (in bits)
-            1 data member change:
-              'S s' size changed from 128 to 192 (in bits) (by +64 bits)
+            no data member change (1 filtered);
           'int r' offset changed from 128 to 192 (in bits) (by +64 bits)
 
diff --git a/tests/data/test-abidiff/test-PR27616-squished-v0.abi b/tests/data/test-abidiff/test-PR27616-squished-v0.abi
new file mode 100644
index 0000000..6b3d046
--- /dev/null
+++ b/tests/data/test-abidiff/test-PR27616-squished-v0.abi
@@ -0,0 +1,43 @@
+<abi-corpus version='2.0' path='data/test-read-dwarf/test6.so'>
+  <elf-needed>
+    <dependency name='libstdc++.so.6'/>
+    <dependency name='libm.so.6'/>
+    <dependency name='libgcc_s.so.1'/>
+    <dependency name='libc.so.6'/>
+  </elf-needed>
+  <elf-function-symbols>
+    <elf-symbol name='_Z3barv' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='_Z4blehv' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='_ZN1B3fooEv' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='_fini' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='_init' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-function-symbols>
+  <elf-variable-symbols>
+    <elf-symbol name='_ZN1CIiE3barE' size='4' type='object-type' binding='gnu-unique-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='_ZZN1B3fooEvE1a' size='4' type='object-type' binding='gnu-unique-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-variable-symbols>
+  <abi-instr address-size='64' path='test6.cc' comp-dir-path='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf' language='LANG_C_plus_plus'>
+    <type-decl name='int' size-in-bits='32' id='type-id-1'/>
+    <class-decl name='B' size-in-bits='8' is-struct='yes' visibility='default' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='9' column='1' id='type-id-2'>
+      <member-function access='public'>
+        <function-decl name='foo' mangled-name='_ZN1B3fooEv' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='11' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN1B3fooEv'>
+          <parameter type-id='type-id-3' name='this' is-artificial='yes'/>
+          <return type-id='type-id-1'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <class-decl name='C&lt;int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='26' column='1' id='type-id-4'>
+      <data-member access='public' static='yes'>
+        <var-decl name='bar' type-id='type-id-1' mangled-name='_ZN1CIiE3barE' visibility='default' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='31' column='1' elf-symbol-id='_ZN1CIiE3barE'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-5'/>
+    <qualified-type-def type-id='type-id-5' const='yes' id='type-id-3'/>
+    <function-decl name='bar' mangled-name='_Z3barv' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='19' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3barv'>
+      <return type-id='type-id-1'/>
+    </function-decl>
+    <function-decl name='bleh' mangled-name='_Z4blehv' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='34' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z4blehv'>
+      <return type-id='type-id-1'/>
+    </function-decl>
+  </abi-instr>
+</abi-corpus>
diff --git a/tests/data/test-abidiff/test-PR27616-squished-v1.abi b/tests/data/test-abidiff/test-PR27616-squished-v1.abi
new file mode 100644
index 0000000..20495f0
--- /dev/null
+++ b/tests/data/test-abidiff/test-PR27616-squished-v1.abi
@@ -0,0 +1 @@
+<abi-corpus version='2.0' path='data/test-read-dwarf/test6.so'><elf-needed><dependency name='libstdc++.so.6'/><dependency name='libm.so.6'/><dependency name='libgcc_s.so.1'/><dependency name='libc.so.6'/></elf-needed><elf-function-symbols><elf-symbol name='_Z3barv' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/><elf-symbol name='_Z4blehv' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/><elf-symbol name='_ZN1B3fooEv' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/><elf-symbol name='_fini' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/><elf-symbol name='_init' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/></elf-function-symbols><elf-variable-symbols><elf-symbol name='_ZN1CIiE3barE' size='4' type='object-type' binding='gnu-unique-binding' visibility='default-visibility' is-defined='yes'/><elf-symbol name='_ZZN1B3fooEvE1a' size='4' type='object-type' binding='gnu-unique-binding' visibility='default-visibility' is-defined='yes'/></elf-variable-symbols><abi-instr address-size='64' path='test6.cc' comp-dir-path='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf' language='LANG_C_plus_plus'><type-decl name='int' size-in-bits='32' id='type-id-1'/><class-decl name='B' size-in-bits='8' is-struct='yes' visibility='default' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='9' column='1' id='type-id-2'><member-function access='public'><function-decl name='foo' mangled-name='_ZN1B3fooEv' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='11' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN1B3fooEv'><parameter type-id='type-id-3' name='this' is-artificial='yes'/><return type-id='type-id-1'/></function-decl></member-function></class-decl><class-decl name='C&lt;int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='26' column='1' id='type-id-4'><data-member access='public' static='yes'><var-decl name='bar' type-id='type-id-1' mangled-name='_ZN1CIiE3barE' visibility='default' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='31' column='1' elf-symbol-id='_ZN1CIiE3barE'/></data-member></class-decl><pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-5'/><qualified-type-def type-id='type-id-5' const='yes' id='type-id-3'/><function-decl name='bar' mangled-name='_Z3barv' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='19' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3barv'><return type-id='type-id-1'/></function-decl><function-decl name='bleh' mangled-name='_Z4blehv' filepath='/home/skumari/Tasks/source_repo/dodji/libabigail/tests/data/test-read-dwarf/test6.cc' line='34' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z4blehv'><return type-id='type-id-1'/></function-decl></abi-instr></abi-corpus>
diff --git a/tests/data/test-abidiff/test-PR27616-v0.xml b/tests/data/test-abidiff/test-PR27616-v0.xml
new file mode 100644
index 0000000..5e025ff
--- /dev/null
+++ b/tests/data/test-abidiff/test-PR27616-v0.xml
@@ -0,0 +1,4 @@
+<abi-corpus-group architecture='elf-arm-aarch64'>
+  <abi-corpus path='vmlinux' architecture='elf-arm-aarch64'>
+  </abi-corpus>
+</abi-corpus-group>
diff --git a/tests/data/test-abidiff/test-PR27616-v1.xml b/tests/data/test-abidiff/test-PR27616-v1.xml
new file mode 100644
index 0000000..aa8059b
--- /dev/null
+++ b/tests/data/test-abidiff/test-PR27616-v1.xml
@@ -0,0 +1,3 @@
+<abi-corpus-group architecture='elf-arm-aarch64'>
+  <abi-corpus path='vmlinux' architecture='elf-arm-aarch64'/>
+</abi-corpus-group>
diff --git a/tests/data/test-abidiff/test-PR27985-report.txt b/tests/data/test-abidiff/test-PR27985-report.txt
new file mode 100644
index 0000000..9e741f9
--- /dev/null
+++ b/tests/data/test-abidiff/test-PR27985-report.txt
@@ -0,0 +1,19 @@
+Functions changes summary: 0 Removed, 1 Changed, 0 Added function
+Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
+
+1 function with some indirect sub-type change:
+
+  [C] 'function void foo(node*)' has some indirect sub-type changes:
+    parameter 1 of type 'node*' has sub-type changes:
+      in pointed to type 'struct node':
+        type size hasn't changed
+        1 data member change:
+          type of 'leaf* ptr' changed:
+            in pointed to type 'struct leaf':
+              type size changed from 64 to 96 (in bits)
+              1 data member change:
+                type of 'int numbers[2]' changed:
+                  type name changed from 'int[2]' to 'int[3]'
+                  array type size changed from 64 to 96
+                  array type subrange 1 changed length from 2 to 3
+
diff --git a/tests/data/test-abidiff/test-PR27985-v0.c b/tests/data/test-abidiff/test-PR27985-v0.c
new file mode 100644
index 0000000..cd0b486
--- /dev/null
+++ b/tests/data/test-abidiff/test-PR27985-v0.c
@@ -0,0 +1,11 @@
+struct leaf
+{
+  int numbers[2];
+};
+
+struct node
+{
+  struct leaf* ptr;
+};
+
+void foo(struct node *n) { (void) n; }
diff --git a/tests/data/test-abidiff/test-PR27985-v0.o b/tests/data/test-abidiff/test-PR27985-v0.o
new file mode 100644
index 0000000..fda4e9b
--- /dev/null
+++ b/tests/data/test-abidiff/test-PR27985-v0.o
Binary files differ
diff --git a/tests/data/test-abidiff/test-PR27985-v0.o.abi b/tests/data/test-abidiff/test-PR27985-v0.o.abi
new file mode 100644
index 0000000..7fbae4a
--- /dev/null
+++ b/tests/data/test-abidiff/test-PR27985-v0.o.abi
@@ -0,0 +1,29 @@
+<abi-corpus version='2.0' path='test-v0.o' architecture='elf-amd-x86_64'>
+  <elf-function-symbols>
+    <elf-symbol name='foo' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-function-symbols>
+  <abi-instr address-size='64' path='test-v0.c' comp-dir-path='/home/dodji/git/libabigail/fixes/prtests/PR27985' language='LANG_C11'>
+    <type-decl name='int' size-in-bits='32' id='type-id-1'/>
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='64' id='type-id-2'>
+      <subrange length='2' type-id='type-id-3' id='type-id-4'/>
+    </array-type-def>
+    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-3'/>
+    <type-decl name='void' id='type-id-5'/>
+    <class-decl name='leaf' size-in-bits='64' is-struct='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/prtests/PR27985/test-v0.c' line='1' column='1' id='type-id-6'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='numbers' type-id='type-id-2' visibility='default' filepath='/home/dodji/git/libabigail/fixes/prtests/PR27985/test-v0.c' line='3' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='node' size-in-bits='64' is-struct='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/prtests/PR27985/test-v0.c' line='6' column='1' id='type-id-7'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='ptr' type-id='type-id-8' visibility='default' filepath='/home/dodji/git/libabigail/fixes/prtests/PR27985/test-v0.c' line='8' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-6' size-in-bits='64' id='type-id-8'/>
+    <pointer-type-def type-id='type-id-7' size-in-bits='64' id='type-id-9'/>
+    <function-decl name='foo' mangled-name='foo' filepath='/home/dodji/git/libabigail/fixes/prtests/PR27985/test-v0.c' line='11' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='foo'>
+      <parameter type-id='type-id-9' name='n' filepath='/home/dodji/git/libabigail/fixes/prtests/PR27985/test-v0.c' line='11' column='1'/>
+      <return type-id='type-id-5'/>
+    </function-decl>
+  </abi-instr>
+</abi-corpus>
diff --git a/tests/data/test-abidiff/test-PR27985-v1.c b/tests/data/test-abidiff/test-PR27985-v1.c
new file mode 100644
index 0000000..b7e0076
--- /dev/null
+++ b/tests/data/test-abidiff/test-PR27985-v1.c
@@ -0,0 +1,11 @@
+struct leaf
+{
+  int numbers[3];
+};
+
+struct node
+{
+  struct leaf* ptr;
+};
+
+void foo(struct node *n) { (void) n; }
diff --git a/tests/data/test-abidiff/test-PR27985-v1.o b/tests/data/test-abidiff/test-PR27985-v1.o
new file mode 100644
index 0000000..017bd88
--- /dev/null
+++ b/tests/data/test-abidiff/test-PR27985-v1.o
Binary files differ
diff --git a/tests/data/test-abidiff/test-PR27985-v1.o.abi b/tests/data/test-abidiff/test-PR27985-v1.o.abi
new file mode 100644
index 0000000..09d2f44
--- /dev/null
+++ b/tests/data/test-abidiff/test-PR27985-v1.o.abi
@@ -0,0 +1,29 @@
+<abi-corpus version='2.0' path='test-v1.o' architecture='elf-amd-x86_64'>
+  <elf-function-symbols>
+    <elf-symbol name='foo' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
+  </elf-function-symbols>
+  <abi-instr address-size='64' path='test-v1.c' comp-dir-path='/home/dodji/git/libabigail/fixes/prtests/PR27985' language='LANG_C11'>
+    <type-decl name='int' size-in-bits='32' id='type-id-1'/>
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='96' id='type-id-2'>
+      <subrange length='3' type-id='type-id-3' id='type-id-4'/>
+    </array-type-def>
+    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-3'/>
+    <type-decl name='void' id='type-id-5'/>
+    <class-decl name='leaf' size-in-bits='96' is-struct='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/prtests/PR27985/test-v1.c' line='1' column='1' id='type-id-6'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='numbers' type-id='type-id-2' visibility='default' filepath='/home/dodji/git/libabigail/fixes/prtests/PR27985/test-v1.c' line='3' column='1'/>
+      </data-member>
+    </class-decl>
+    <class-decl name='node' size-in-bits='64' is-struct='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/prtests/PR27985/test-v1.c' line='6' column='1' id='type-id-7'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='ptr' type-id='type-id-8' visibility='default' filepath='/home/dodji/git/libabigail/fixes/prtests/PR27985/test-v1.c' line='8' column='1'/>
+      </data-member>
+    </class-decl>
+    <pointer-type-def type-id='type-id-6' size-in-bits='64' id='type-id-8'/>
+    <pointer-type-def type-id='type-id-7' size-in-bits='64' id='type-id-9'/>
+    <function-decl name='foo' mangled-name='foo' filepath='/home/dodji/git/libabigail/fixes/prtests/PR27985/test-v1.c' line='11' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='foo'>
+      <parameter type-id='type-id-9' name='n' filepath='/home/dodji/git/libabigail/fixes/prtests/PR27985/test-v1.c' line='11' column='1'/>
+      <return type-id='type-id-5'/>
+    </function-decl>
+  </abi-instr>
+</abi-corpus>
diff --git a/tests/data/test-annotate/libtest23.so.abi b/tests/data/test-annotate/libtest23.so.abi
index 3b5c603..ce6c145 100644
--- a/tests/data/test-annotate/libtest23.so.abi
+++ b/tests/data/test-annotate/libtest23.so.abi
@@ -1,4 +1,4 @@
-<abi-corpus version='2.0' architecture='elf-amd-x86_64'>
+<abi-corpus version='2.1' architecture='elf-amd-x86_64'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
@@ -20,27 +20,27 @@
     <type-decl name='bool' size-in-bits='8' id='type-id-1'/>
     <!-- char -->
     <type-decl name='char' size-in-bits='8' id='type-id-2'/>
+    <!-- struct {} -->
+    <class-decl name='__anonymous_struct__' is-struct='yes' is-anonymous='yes' visibility='default' id='type-id-3'/>
     <!-- struct typedef __va_list_tag __va_list_tag -->
-    <class-decl name='typedef __va_list_tag __va_list_tag' size-in-bits='192' is-struct='yes' visibility='default' id='type-id-3'>
+    <class-decl name='typedef __va_list_tag __va_list_tag' size-in-bits='192' is-struct='yes' visibility='default' id='type-id-4'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- unsigned int typedef __va_list_tag __va_list_tag::gp_offset -->
-        <var-decl name='gp_offset' type-id='type-id-4' visibility='default'/>
+        <var-decl name='gp_offset' type-id='type-id-5' visibility='default'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
         <!-- unsigned int typedef __va_list_tag __va_list_tag::fp_offset -->
-        <var-decl name='fp_offset' type-id='type-id-4' visibility='default'/>
+        <var-decl name='fp_offset' type-id='type-id-5' visibility='default'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- void* typedef __va_list_tag __va_list_tag::overflow_arg_area -->
-        <var-decl name='overflow_arg_area' type-id='type-id-5' visibility='default'/>
+        <var-decl name='overflow_arg_area' type-id='type-id-6' visibility='default'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- void* typedef __va_list_tag __va_list_tag::reg_save_area -->
-        <var-decl name='reg_save_area' type-id='type-id-5' visibility='default'/>
+        <var-decl name='reg_save_area' type-id='type-id-6' visibility='default'/>
       </data-member>
     </class-decl>
-    <!-- struct {} -->
-    <class-decl name='__anonymous_struct__1' is-struct='yes' is-anonymous='yes' visibility='default' id='type-id-6'/>
     <!-- double -->
     <type-decl name='double' size-in-bits='64' id='type-id-7'/>
     <!-- float -->
@@ -58,7 +58,7 @@
     <!-- short int -->
     <type-decl name='short int' size-in-bits='16' id='type-id-14'/>
     <!-- unsigned int -->
-    <type-decl name='unsigned int' size-in-bits='32' id='type-id-4'/>
+    <type-decl name='unsigned int' size-in-bits='32' id='type-id-5'/>
     <!-- unsigned long int -->
     <type-decl name='unsigned long int' size-in-bits='64' id='type-id-15'/>
     <!-- unsigned long int[] -->
@@ -68,37 +68,14 @@
     </array-type-def>
     <!-- variadic parameter type -->
     <type-decl name='variadic parameter type' id='type-id-18'/>
-    <!-- void -->
-    <type-decl name='void' id='type-id-19'/>
     <!-- wchar_t -->
-    <type-decl name='wchar_t' size-in-bits='32' id='type-id-20'/>
-    <!-- typedef unsigned int wint_t -->
-    <typedef-decl name='wint_t' type-id='type-id-4' filepath='/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h' line='353' column='1' id='type-id-21'/>
+    <type-decl name='wchar_t' size-in-bits='32' id='type-id-19'/>
+    <!-- typedef int __int32_t -->
+    <typedef-decl name='__int32_t' type-id='type-id-9' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-20'/>
     <!-- typedef _IO_FILE __FILE -->
-    <typedef-decl name='__FILE' type-id='type-id-22' filepath='/usr/include/stdio.h' line='64' column='1' id='type-id-23'/>
-    <!-- typedef unsigned long int size_t -->
-    <typedef-decl name='size_t' type-id='type-id-15' filepath='/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h' line='212' column='1' id='type-id-24'/>
-    <!-- typedef __mbstate_t mbstate_t -->
-    <typedef-decl name='mbstate_t' type-id='type-id-25' filepath='/usr/include/wchar.h' line='106' column='1' id='type-id-26'/>
-    <!-- typedef __anonymous_struct__ __mbstate_t -->
-    <typedef-decl name='__mbstate_t' type-id='type-id-27' filepath='/usr/include/wchar.h' line='94' column='1' id='type-id-25'/>
-    <!-- struct {int __count; union {} __value;} -->
-    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-25' visibility='default' filepath='/usr/include/wchar.h' line='83' column='1' id='type-id-27'>
-      <member-type access='public'>
-        <!-- union {} -->
-        <union-decl name='__anonymous_union__' is-anonymous='yes' visibility='default' is-declaration-only='yes' id='type-id-28'/>
-      </member-type>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int __count -->
-        <var-decl name='__count' type-id='type-id-9' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- union {} __value -->
-        <var-decl name='__value' type-id='type-id-28' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
-      </data-member>
-    </class-decl>
+    <typedef-decl name='__FILE' type-id='type-id-21' filepath='/usr/include/stdio.h' line='64' column='1' id='type-id-22'/>
     <!-- struct tm -->
-    <class-decl name='tm' size-in-bits='448' is-struct='yes' visibility='default' filepath='/usr/include/time.h' line='133' column='1' id='type-id-29'>
+    <class-decl name='tm' size-in-bits='448' is-struct='yes' visibility='default' filepath='/usr/include/time.h' line='133' column='1' id='type-id-23'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- int tm::tm_sec -->
         <var-decl name='tm_sec' type-id='type-id-9' visibility='default' filepath='/usr/include/time.h' line='135' column='1'/>
@@ -141,234 +118,255 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='384'>
         <!-- const char* tm::tm_zone -->
-        <var-decl name='tm_zone' type-id='type-id-30' visibility='default' filepath='/usr/include/time.h' line='147' column='1'/>
+        <var-decl name='tm_zone' type-id='type-id-24' visibility='default' filepath='/usr/include/time.h' line='147' column='1'/>
       </data-member>
     </class-decl>
+    <!-- struct __mbstate_t -->
+    <class-decl name='__mbstate_t' size-in-bits='64' is-struct='yes' naming-typedef-id='type-id-25' visibility='default' filepath='/usr/include/wchar.h' line='83' column='1' id='type-id-26'>
+      <member-type access='public'>
+        <!-- union {} -->
+        <union-decl name='__anonymous_union__' is-anonymous='yes' visibility='default' is-declaration-only='yes' id='type-id-27'/>
+      </member-type>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- int __mbstate_t::__count -->
+        <var-decl name='__count' type-id='type-id-9' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <!-- union {} __mbstate_t::__value -->
+        <var-decl name='__value' type-id='type-id-27' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef __mbstate_t __mbstate_t -->
+    <typedef-decl name='__mbstate_t' type-id='type-id-26' filepath='/usr/include/wchar.h' line='94' column='1' id='type-id-25'/>
+    <!-- typedef __mbstate_t mbstate_t -->
+    <typedef-decl name='mbstate_t' type-id='type-id-25' filepath='/usr/include/wchar.h' line='106' column='1' id='type-id-28'/>
     <!-- typedef unsigned long int wctype_t -->
-    <typedef-decl name='wctype_t' type-id='type-id-15' filepath='/usr/include/wctype.h' line='52' column='1' id='type-id-31'/>
+    <typedef-decl name='wctype_t' type-id='type-id-15' filepath='/usr/include/wctype.h' line='52' column='1' id='type-id-29'/>
     <!-- typedef const __int32_t* wctrans_t -->
-    <typedef-decl name='wctrans_t' type-id='type-id-32' filepath='/usr/include/wctype.h' line='186' column='1' id='type-id-33'/>
-    <!-- typedef int __int32_t -->
-    <typedef-decl name='__int32_t' type-id='type-id-9' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-34'/>
+    <typedef-decl name='wctrans_t' type-id='type-id-30' filepath='/usr/include/wctype.h' line='186' column='1' id='type-id-31'/>
+    <!-- typedef unsigned long int size_t -->
+    <typedef-decl name='size_t' type-id='type-id-15' filepath='/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h' line='212' column='1' id='type-id-32'/>
+    <!-- typedef unsigned int wint_t -->
+    <typedef-decl name='wint_t' type-id='type-id-5' filepath='/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h' line='353' column='1' id='type-id-33'/>
     <!-- __FILE* -->
-    <pointer-type-def type-id='type-id-23' size-in-bits='64' id='type-id-35'/>
-    <!-- __anonymous_struct__1* -->
-    <pointer-type-def type-id='type-id-6' size-in-bits='64' id='type-id-36'/>
+    <pointer-type-def type-id='type-id-22' size-in-bits='64' id='type-id-34'/>
+    <!-- __anonymous_struct__* -->
+    <pointer-type-def type-id='type-id-3' size-in-bits='64' id='type-id-35'/>
     <!-- char& -->
-    <reference-type-def kind='lvalue' type-id='type-id-2' size-in-bits='64' id='type-id-37'/>
+    <reference-type-def kind='lvalue' type-id='type-id-2' size-in-bits='64' id='type-id-36'/>
     <!-- char* -->
-    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-38'/>
+    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-37'/>
     <!-- const __int32_t -->
-    <qualified-type-def type-id='type-id-34' const='yes' id='type-id-39'/>
+    <qualified-type-def type-id='type-id-20' const='yes' id='type-id-38'/>
     <!-- const __int32_t* -->
-    <pointer-type-def type-id='type-id-39' size-in-bits='64' id='type-id-32'/>
+    <pointer-type-def type-id='type-id-38' size-in-bits='64' id='type-id-30'/>
     <!-- const allocator<char> -->
-    <qualified-type-def type-id='type-id-40' const='yes' id='type-id-41'/>
+    <qualified-type-def type-id='type-id-39' const='yes' id='type-id-40'/>
     <!-- const allocator<char>& -->
-    <reference-type-def kind='lvalue' type-id='type-id-41' size-in-bits='64' id='type-id-42'/>
+    <reference-type-def kind='lvalue' type-id='type-id-40' size-in-bits='64' id='type-id-41'/>
     <!-- const bool -->
-    <qualified-type-def type-id='type-id-1' const='yes' id='type-id-43'/>
+    <qualified-type-def type-id='type-id-1' const='yes' id='type-id-42'/>
     <!-- const char -->
-    <qualified-type-def type-id='type-id-2' const='yes' id='type-id-44'/>
+    <qualified-type-def type-id='type-id-2' const='yes' id='type-id-43'/>
     <!-- const char& -->
-    <reference-type-def kind='lvalue' type-id='type-id-44' size-in-bits='64' id='type-id-45'/>
+    <reference-type-def kind='lvalue' type-id='type-id-43' size-in-bits='64' id='type-id-44'/>
     <!-- const char* -->
-    <pointer-type-def type-id='type-id-44' size-in-bits='64' id='type-id-30'/>
+    <pointer-type-def type-id='type-id-43' size-in-bits='64' id='type-id-24'/>
     <!-- const char** -->
-    <pointer-type-def type-id='type-id-30' size-in-bits='64' id='type-id-46'/>
+    <pointer-type-def type-id='type-id-24' size-in-bits='64' id='type-id-45'/>
     <!-- const int -->
-    <qualified-type-def type-id='type-id-9' const='yes' id='type-id-47'/>
+    <qualified-type-def type-id='type-id-9' const='yes' id='type-id-46'/>
     <!-- const long int -->
-    <qualified-type-def type-id='type-id-11' const='yes' id='type-id-48'/>
+    <qualified-type-def type-id='type-id-11' const='yes' id='type-id-47'/>
     <!-- const mbstate_t -->
-    <qualified-type-def type-id='type-id-26' const='yes' id='type-id-49'/>
+    <qualified-type-def type-id='type-id-28' const='yes' id='type-id-48'/>
     <!-- const mbstate_t* -->
-    <pointer-type-def type-id='type-id-49' size-in-bits='64' id='type-id-50'/>
+    <pointer-type-def type-id='type-id-48' size-in-bits='64' id='type-id-49'/>
     <!-- const short int -->
-    <qualified-type-def type-id='type-id-14' const='yes' id='type-id-51'/>
+    <qualified-type-def type-id='type-id-14' const='yes' id='type-id-50'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> > -->
-    <qualified-type-def type-id='type-id-52' const='yes' id='type-id-53'/>
+    <qualified-type-def type-id='type-id-51' const='yes' id='type-id-52'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >& -->
-    <reference-type-def kind='lvalue' type-id='type-id-53' size-in-bits='64' id='type-id-54'/>
+    <reference-type-def kind='lvalue' type-id='type-id-52' size-in-bits='64' id='type-id-53'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >* -->
-    <pointer-type-def type-id='type-id-53' size-in-bits='64' id='type-id-55'/>
+    <pointer-type-def type-id='type-id-52' size-in-bits='64' id='type-id-54'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep -->
-    <qualified-type-def type-id='type-id-56' const='yes' id='type-id-57'/>
+    <qualified-type-def type-id='type-id-55' const='yes' id='type-id-56'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type -->
-    <qualified-type-def type-id='type-id-58' const='yes' id='type-id-59'/>
+    <qualified-type-def type-id='type-id-57' const='yes' id='type-id-58'/>
     <!-- const tm -->
-    <qualified-type-def type-id='type-id-29' const='yes' id='type-id-60'/>
+    <qualified-type-def type-id='type-id-23' const='yes' id='type-id-59'/>
     <!-- const tm* -->
-    <pointer-type-def type-id='type-id-60' size-in-bits='64' id='type-id-61'/>
+    <pointer-type-def type-id='type-id-59' size-in-bits='64' id='type-id-60'/>
     <!-- const unsigned long int -->
-    <qualified-type-def type-id='type-id-15' const='yes' id='type-id-62'/>
+    <qualified-type-def type-id='type-id-15' const='yes' id='type-id-61'/>
     <!-- const wchar_t -->
-    <qualified-type-def type-id='type-id-20' const='yes' id='type-id-63'/>
+    <qualified-type-def type-id='type-id-19' const='yes' id='type-id-62'/>
     <!-- const wchar_t* -->
-    <pointer-type-def type-id='type-id-63' size-in-bits='64' id='type-id-64'/>
+    <pointer-type-def type-id='type-id-62' size-in-bits='64' id='type-id-63'/>
     <!-- const wchar_t** -->
-    <pointer-type-def type-id='type-id-64' size-in-bits='64' id='type-id-65'/>
+    <pointer-type-def type-id='type-id-63' size-in-bits='64' id='type-id-64'/>
     <!-- mbstate_t* -->
-    <pointer-type-def type-id='type-id-26' size-in-bits='64' id='type-id-66'/>
+    <pointer-type-def type-id='type-id-28' size-in-bits='64' id='type-id-65'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >& -->
-    <reference-type-def kind='lvalue' type-id='type-id-52' size-in-bits='64' id='type-id-67'/>
+    <reference-type-def kind='lvalue' type-id='type-id-51' size-in-bits='64' id='type-id-66'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >* -->
-    <pointer-type-def type-id='type-id-52' size-in-bits='64' id='type-id-68'/>
+    <pointer-type-def type-id='type-id-51' size-in-bits='64' id='type-id-67'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep& -->
-    <reference-type-def kind='lvalue' type-id='type-id-56' size-in-bits='64' id='type-id-69'/>
+    <reference-type-def kind='lvalue' type-id='type-id-55' size-in-bits='64' id='type-id-68'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep* -->
-    <pointer-type-def type-id='type-id-56' size-in-bits='64' id='type-id-70'/>
+    <pointer-type-def type-id='type-id-55' size-in-bits='64' id='type-id-69'/>
     <!-- std::string& -->
-    <qualified-type-def type-id='type-id-71' id='type-id-72'/>
-    <!-- std::string& -->
-    <reference-type-def kind='lvalue' type-id='type-id-73' size-in-bits='64' id='type-id-71'/>
+    <reference-type-def kind='lvalue' type-id='type-id-70' size-in-bits='64' id='type-id-71'/>
     <!-- typedef __va_list_tag __va_list_tag* -->
-    <pointer-type-def type-id='type-id-3' size-in-bits='64' id='type-id-74'/>
+    <pointer-type-def type-id='type-id-4' size-in-bits='64' id='type-id-72'/>
     <!-- void* -->
-    <pointer-type-def type-id='type-id-19' size-in-bits='64' id='type-id-5'/>
+    <pointer-type-def type-id='type-id-73' size-in-bits='64' id='type-id-6'/>
     <!-- wchar_t* -->
-    <pointer-type-def type-id='type-id-20' size-in-bits='64' id='type-id-75'/>
+    <pointer-type-def type-id='type-id-19' size-in-bits='64' id='type-id-74'/>
     <!-- wchar_t** -->
-    <pointer-type-def type-id='type-id-75' size-in-bits='64' id='type-id-76'/>
+    <pointer-type-def type-id='type-id-74' size-in-bits='64' id='type-id-75'/>
+    <!-- struct _IO_FILE -->
+    <class-decl name='_IO_FILE' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-21'/>
     <!-- class allocator<char> -->
-    <class-decl name='allocator&lt;char&gt;' visibility='default' is-declaration-only='yes' id='type-id-40'>
+    <class-decl name='allocator&lt;char&gt;' visibility='default' is-declaration-only='yes' id='type-id-39'>
       <member-type access='public'>
         <!-- typedef std::size_t allocator<char>::size_type -->
-        <typedef-decl name='size_type' type-id='type-id-78' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='95' column='1' id='type-id-77'/>
+        <typedef-decl name='size_type' type-id='type-id-76' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='95' column='1' id='type-id-77'/>
       </member-type>
       <member-type access='public'>
         <!-- typedef std::ptrdiff_t allocator<char>::difference_type -->
-        <typedef-decl name='difference_type' type-id='type-id-80' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='96' column='1' id='type-id-79'/>
-      </member-type>
-      <member-type access='public'>
-        <!-- typedef char& allocator<char>::reference -->
-        <typedef-decl name='reference' type-id='type-id-37' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='99' column='1' id='type-id-81'/>
-      </member-type>
-      <member-type access='public'>
-        <!-- typedef const char& allocator<char>::const_reference -->
-        <typedef-decl name='const_reference' type-id='type-id-45' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='100' column='1' id='type-id-82'/>
+        <typedef-decl name='difference_type' type-id='type-id-78' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='96' column='1' id='type-id-79'/>
       </member-type>
       <member-type access='public'>
         <!-- typedef char* allocator<char>::pointer -->
-        <typedef-decl name='pointer' type-id='type-id-38' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='97' column='1' id='type-id-83'/>
+        <typedef-decl name='pointer' type-id='type-id-37' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='97' column='1' id='type-id-80'/>
       </member-type>
       <member-type access='public'>
         <!-- typedef const char* allocator<char>::const_pointer -->
-        <typedef-decl name='const_pointer' type-id='type-id-30' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='98' column='1' id='type-id-84'/>
+        <typedef-decl name='const_pointer' type-id='type-id-24' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='98' column='1' id='type-id-81'/>
+      </member-type>
+      <member-type access='public'>
+        <!-- typedef char& allocator<char>::reference -->
+        <typedef-decl name='reference' type-id='type-id-36' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='99' column='1' id='type-id-82'/>
+      </member-type>
+      <member-type access='public'>
+        <!-- typedef const char& allocator<char>::const_reference -->
+        <typedef-decl name='const_reference' type-id='type-id-44' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='100' column='1' id='type-id-83'/>
       </member-type>
     </class-decl>
     <!-- struct char_traits<char> -->
-    <class-decl name='char_traits&lt;char&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-85'>
+    <class-decl name='char_traits&lt;char&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-84'>
       <member-type access='public'>
         <!-- typedef char char_traits<char>::char_type -->
-        <typedef-decl name='char_type' type-id='type-id-2' filepath='/usr/include/c++/4.8.2/bits/char_traits.h' line='235' column='1' id='type-id-86'/>
+        <typedef-decl name='char_type' type-id='type-id-2' filepath='/usr/include/c++/4.8.2/bits/char_traits.h' line='235' column='1' id='type-id-85'/>
       </member-type>
     </class-decl>
     <!-- struct rebind<char> -->
-    <class-decl name='rebind&lt;char&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-87'>
+    <class-decl name='rebind&lt;char&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-86'>
       <member-type access='public'>
         <!-- typedef allocator<char> rebind<char>::other -->
-        <typedef-decl name='other' type-id='type-id-40' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='105' column='1' id='type-id-88'/>
+        <typedef-decl name='other' type-id='type-id-39' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='105' column='1' id='type-id-87'/>
       </member-type>
     </class-decl>
     <!-- namespace __gnu_cxx -->
     <namespace-decl name='__gnu_cxx'>
+      <!-- class __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > -->
+      <class-decl name='__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-88'/>
       <!-- class __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > -->
       <class-decl name='__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-89'/>
-      <!-- class __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > -->
-      <class-decl name='__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-90'/>
     </namespace-decl>
     <!-- namespace std -->
     <namespace-decl name='std'>
       <!-- typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::string -->
-      <typedef-decl name='string' type-id='type-id-52' filepath='/usr/include/c++/4.8.2/bits/stringfwd.h' line='62' column='1' id='type-id-73'/>
+      <typedef-decl name='string' type-id='type-id-51' filepath='/usr/include/c++/4.8.2/bits/stringfwd.h' line='62' column='1' id='type-id-70'/>
     </namespace-decl>
     <!-- namespace std -->
     <namespace-decl name='std'>
       <!-- class std::basic_string<char, std::char_traits<char>, std::allocator<char> > -->
-      <class-decl name='basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;' size-in-bits='64' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='112' column='1' id='type-id-52'>
-        <member-type access='public'>
-          <!-- typedef allocator<char>::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type -->
-          <typedef-decl name='size_type' type-id='type-id-77' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='121' column='1' id='type-id-58'/>
-        </member-type>
+      <class-decl name='basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;' size-in-bits='64' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='112' column='1' id='type-id-51'>
         <member-type access='private'>
           <!-- typedef rebind<char>::other std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_CharT_alloc_type -->
-          <typedef-decl name='_CharT_alloc_type' type-id='type-id-88' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='114' column='1' id='type-id-91'/>
+          <typedef-decl name='_CharT_alloc_type' type-id='type-id-87' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='114' column='1' id='type-id-90'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef char_traits<char> std::basic_string<char, std::char_traits<char>, std::allocator<char> >::traits_type -->
-          <typedef-decl name='traits_type' type-id='type-id-85' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='118' column='1' id='type-id-92'/>
+          <typedef-decl name='traits_type' type-id='type-id-84' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='118' column='1' id='type-id-91'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef char_traits<char>::char_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::value_type -->
-          <typedef-decl name='value_type' type-id='type-id-86' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='119' column='1' id='type-id-93'/>
+          <typedef-decl name='value_type' type-id='type-id-85' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='119' column='1' id='type-id-92'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef allocator<char> std::basic_string<char, std::char_traits<char>, std::allocator<char> >::allocator_type -->
-          <typedef-decl name='allocator_type' type-id='type-id-40' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='120' column='1' id='type-id-94'/>
+          <typedef-decl name='allocator_type' type-id='type-id-39' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='120' column='1' id='type-id-93'/>
+        </member-type>
+        <member-type access='public'>
+          <!-- typedef allocator<char>::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type -->
+          <typedef-decl name='size_type' type-id='type-id-77' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='121' column='1' id='type-id-57'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef allocator<char>::difference_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::difference_type -->
-          <typedef-decl name='difference_type' type-id='type-id-79' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='122' column='1' id='type-id-95'/>
+          <typedef-decl name='difference_type' type-id='type-id-79' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='122' column='1' id='type-id-94'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef allocator<char>::reference std::basic_string<char, std::char_traits<char>, std::allocator<char> >::reference -->
-          <typedef-decl name='reference' type-id='type-id-81' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='123' column='1' id='type-id-96'/>
+          <typedef-decl name='reference' type-id='type-id-82' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='123' column='1' id='type-id-95'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef allocator<char>::const_reference std::basic_string<char, std::char_traits<char>, std::allocator<char> >::const_reference -->
-          <typedef-decl name='const_reference' type-id='type-id-82' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='124' column='1' id='type-id-97'/>
+          <typedef-decl name='const_reference' type-id='type-id-83' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='124' column='1' id='type-id-96'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef allocator<char>::pointer std::basic_string<char, std::char_traits<char>, std::allocator<char> >::pointer -->
-          <typedef-decl name='pointer' type-id='type-id-83' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='125' column='1' id='type-id-98'/>
+          <typedef-decl name='pointer' type-id='type-id-80' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='125' column='1' id='type-id-97'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef allocator<char>::const_pointer std::basic_string<char, std::char_traits<char>, std::allocator<char> >::const_pointer -->
-          <typedef-decl name='const_pointer' type-id='type-id-84' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='126' column='1' id='type-id-99'/>
+          <typedef-decl name='const_pointer' type-id='type-id-81' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='126' column='1' id='type-id-98'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > std::basic_string<char, std::char_traits<char>, std::allocator<char> >::iterator -->
-          <typedef-decl name='iterator' type-id='type-id-89' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='127' column='1' id='type-id-100'/>
+          <typedef-decl name='iterator' type-id='type-id-89' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='127' column='1' id='type-id-99'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > std::basic_string<char, std::char_traits<char>, std::allocator<char> >::const_iterator -->
-          <typedef-decl name='const_iterator' type-id='type-id-90' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='129' column='1' id='type-id-101'/>
+          <typedef-decl name='const_iterator' type-id='type-id-88' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='129' column='1' id='type-id-100'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef std::reverse_iterator<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::basic_string<char, std::char_traits<char>, std::allocator<char> >::const_reverse_iterator -->
-          <typedef-decl name='const_reverse_iterator' type-id='type-id-103' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='130' column='1' id='type-id-102'/>
+          <typedef-decl name='const_reverse_iterator' type-id='type-id-101' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='130' column='1' id='type-id-102'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef std::reverse_iterator<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::basic_string<char, std::char_traits<char>, std::allocator<char> >::reverse_iterator -->
-          <typedef-decl name='reverse_iterator' type-id='type-id-105' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='131' column='1' id='type-id-104'/>
+          <typedef-decl name='reverse_iterator' type-id='type-id-103' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='131' column='1' id='type-id-104'/>
         </member-type>
         <member-type access='private'>
           <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider -->
-          <class-decl name='_Alloc_hider' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-106'>
+          <class-decl name='_Alloc_hider' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-105'>
             <member-function access='public' constructor='yes'>
               <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider::_Alloc_hider() -->
               <function-decl name='_Alloc_hider' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='274' column='1' visibility='default' binding='global' size-in-bits='64'>
                 <!-- void -->
-                <return type-id='type-id-19'/>
+                <return type-id='type-id-73'/>
               </function-decl>
             </member-function>
           </class-decl>
         </member-type>
         <member-type access='private'>
           <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base -->
-          <class-decl name='_Rep_base' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-107'/>
+          <class-decl name='_Rep_base' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-106'/>
         </member-type>
         <member-type access='private'>
           <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep -->
-          <class-decl name='_Rep' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-56'>
+          <class-decl name='_Rep' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-55'>
             <data-member access='public' static='yes'>
               <!-- static const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_max_size -->
-              <var-decl name='_S_max_size' type-id='type-id-59' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='50' column='1'/>
+              <var-decl name='_S_max_size' type-id='type-id-58' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='50' column='1'/>
             </data-member>
             <data-member access='public' static='yes'>
               <!-- static const char std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_terminal -->
-              <var-decl name='_S_terminal' type-id='type-id-44' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='55' column='1'/>
+              <var-decl name='_S_terminal' type-id='type-id-43' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='55' column='1'/>
             </data-member>
             <data-member access='public' static='yes'>
               <!-- static unsigned long int std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_empty_rep_storage[] -->
@@ -378,127 +376,127 @@
         </member-type>
         <data-member access='public' static='yes'>
           <!-- static const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::npos -->
-          <var-decl name='npos' type-id='type-id-59' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='285' column='1'/>
+          <var-decl name='npos' type-id='type-id-58' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='285' column='1'/>
         </data-member>
         <data-member access='private' layout-offset-in-bits='0'>
           <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dataplus -->
-          <var-decl name='_M_dataplus' type-id='type-id-106' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='289' column='1'/>
+          <var-decl name='_M_dataplus' type-id='type-id-105' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='289' column='1'/>
         </data-member>
         <member-function access='public'>
           <!-- void std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string() -->
           <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='437' column='1' visibility='default' binding='global' size-in-bits='64'>
             <!-- implicit parameter of type 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >*' -->
-            <parameter type-id='type-id-68' is-artificial='yes'/>
+            <parameter type-id='type-id-67' is-artificial='yes'/>
             <!-- void -->
-            <return type-id='type-id-19'/>
+            <return type-id='type-id-73'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <!-- void std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(const allocator<char>&) -->
           <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='177' column='1' visibility='default' binding='global' size-in-bits='64'>
             <!-- implicit parameter of type 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >*' -->
-            <parameter type-id='type-id-68' is-artificial='yes'/>
+            <parameter type-id='type-id-67' is-artificial='yes'/>
             <!-- parameter of type 'const allocator<char>&' -->
-            <parameter type-id='type-id-42'/>
+            <parameter type-id='type-id-41'/>
             <!-- void -->
-            <return type-id='type-id-19'/>
+            <return type-id='type-id-73'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <!-- void std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&) -->
           <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='169' column='1' visibility='default' binding='global' size-in-bits='64'>
             <!-- implicit parameter of type 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >*' -->
-            <parameter type-id='type-id-68' is-artificial='yes'/>
+            <parameter type-id='type-id-67' is-artificial='yes'/>
             <!-- parameter of type 'const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&' -->
-            <parameter type-id='type-id-54'/>
+            <parameter type-id='type-id-53'/>
             <!-- void -->
-            <return type-id='type-id-19'/>
+            <return type-id='type-id-73'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <!-- void std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type, std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type) -->
           <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='183' column='1' visibility='default' binding='global' size-in-bits='64'>
             <!-- implicit parameter of type 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >*' -->
-            <parameter type-id='type-id-68' is-artificial='yes'/>
+            <parameter type-id='type-id-67' is-artificial='yes'/>
             <!-- parameter of type 'const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&' -->
-            <parameter type-id='type-id-54'/>
+            <parameter type-id='type-id-53'/>
             <!-- parameter of type 'typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type' -->
-            <parameter type-id='type-id-58'/>
+            <parameter type-id='type-id-57'/>
             <!-- parameter of type 'typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type' -->
-            <parameter type-id='type-id-58'/>
+            <parameter type-id='type-id-57'/>
             <!-- void -->
-            <return type-id='type-id-19'/>
+            <return type-id='type-id-73'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <!-- void std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type, std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type, const allocator<char>&) -->
           <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='193' column='1' visibility='default' binding='global' size-in-bits='64'>
             <!-- implicit parameter of type 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >*' -->
-            <parameter type-id='type-id-68' is-artificial='yes'/>
+            <parameter type-id='type-id-67' is-artificial='yes'/>
             <!-- parameter of type 'const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&' -->
-            <parameter type-id='type-id-54'/>
+            <parameter type-id='type-id-53'/>
             <!-- parameter of type 'typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type' -->
-            <parameter type-id='type-id-58'/>
+            <parameter type-id='type-id-57'/>
             <!-- parameter of type 'typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type' -->
-            <parameter type-id='type-id-58'/>
+            <parameter type-id='type-id-57'/>
             <!-- parameter of type 'const allocator<char>&' -->
-            <parameter type-id='type-id-42'/>
+            <parameter type-id='type-id-41'/>
             <!-- void -->
-            <return type-id='type-id-19'/>
+            <return type-id='type-id-73'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <!-- void std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type, const allocator<char>&) -->
           <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='205' column='1' visibility='default' binding='global' size-in-bits='64'>
             <!-- implicit parameter of type 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >*' -->
-            <parameter type-id='type-id-68' is-artificial='yes'/>
+            <parameter type-id='type-id-67' is-artificial='yes'/>
             <!-- parameter of type 'const char*' -->
-            <parameter type-id='type-id-30'/>
+            <parameter type-id='type-id-24'/>
             <!-- parameter of type 'typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type' -->
-            <parameter type-id='type-id-58'/>
+            <parameter type-id='type-id-57'/>
             <!-- parameter of type 'const allocator<char>&' -->
-            <parameter type-id='type-id-42'/>
+            <parameter type-id='type-id-41'/>
             <!-- void -->
-            <return type-id='type-id-19'/>
+            <return type-id='type-id-73'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <!-- void std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(const char*, const allocator<char>&) -->
           <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='212' column='1' visibility='default' binding='global' size-in-bits='64'>
             <!-- implicit parameter of type 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >*' -->
-            <parameter type-id='type-id-68' is-artificial='yes'/>
+            <parameter type-id='type-id-67' is-artificial='yes'/>
             <!-- parameter of type 'const char*' -->
-            <parameter type-id='type-id-30'/>
+            <parameter type-id='type-id-24'/>
             <!-- parameter of type 'const allocator<char>&' -->
-            <parameter type-id='type-id-42'/>
+            <parameter type-id='type-id-41'/>
             <!-- void -->
-            <return type-id='type-id-19'/>
+            <return type-id='type-id-73'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <!-- void std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type, char, const allocator<char>&) -->
           <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='219' column='1' visibility='default' binding='global' size-in-bits='64'>
             <!-- implicit parameter of type 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >*' -->
-            <parameter type-id='type-id-68' is-artificial='yes'/>
+            <parameter type-id='type-id-67' is-artificial='yes'/>
             <!-- parameter of type 'typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type' -->
-            <parameter type-id='type-id-58'/>
+            <parameter type-id='type-id-57'/>
             <!-- parameter of type 'char' -->
             <parameter type-id='type-id-2'/>
             <!-- parameter of type 'const allocator<char>&' -->
-            <parameter type-id='type-id-42'/>
+            <parameter type-id='type-id-41'/>
             <!-- void -->
-            <return type-id='type-id-19'/>
+            <return type-id='type-id-73'/>
           </function-decl>
         </member-function>
         <member-function access='public' destructor='yes'>
           <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string(int) -->
           <function-decl name='~basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='538' column='1' visibility='default' binding='global' size-in-bits='64'>
             <!-- implicit parameter of type 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >*' -->
-            <parameter type-id='type-id-68' is-artificial='yes'/>
+            <parameter type-id='type-id-67' is-artificial='yes'/>
             <!-- artificial parameter of type 'int' -->
             <parameter type-id='type-id-9' is-artificial='yes'/>
             <!-- void -->
-            <return type-id='type-id-19'/>
+            <return type-id='type-id-73'/>
           </function-decl>
         </member-function>
       </class-decl>
@@ -506,517 +504,408 @@
     <!-- namespace std -->
     <namespace-decl name='std'>
       <!-- typedef unsigned long int std::size_t -->
-      <typedef-decl name='size_t' type-id='type-id-15' filepath='/usr/include/c++/4.8.2/x86_64-redhat-linux/bits/c++config.h' line='1857' column='1' id='type-id-78'/>
+      <typedef-decl name='size_t' type-id='type-id-15' filepath='/usr/include/c++/4.8.2/x86_64-redhat-linux/bits/c++config.h' line='1857' column='1' id='type-id-76'/>
       <!-- typedef long int std::ptrdiff_t -->
-      <typedef-decl name='ptrdiff_t' type-id='type-id-11' filepath='/usr/include/c++/4.8.2/x86_64-redhat-linux/bits/c++config.h' line='1858' column='1' id='type-id-80'/>
+      <typedef-decl name='ptrdiff_t' type-id='type-id-11' filepath='/usr/include/c++/4.8.2/x86_64-redhat-linux/bits/c++config.h' line='1858' column='1' id='type-id-78'/>
       <!-- class std::reverse_iterator<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > -->
-      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-103'/>
+      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-101'/>
       <!-- class std::reverse_iterator<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > -->
-      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-105'/>
+      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-103'/>
     </namespace-decl>
+    <!-- void emit(std::string&) -->
+    <function-decl name='emit' mangled-name='_Z4emitRSs' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-first-tu.cc' line='12' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z4emitRSs'>
+      <!-- parameter of type 'std::string&' -->
+      <parameter type-id='type-id-71' name='s' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-first-tu.cc' line='12' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-73'/>
+    </function-decl>
     <!-- namespace __gnu_cxx -->
     <namespace-decl name='__gnu_cxx'>
+      <!-- struct __gnu_cxx::__numeric_traits_integer<char> -->
+      <class-decl name='__numeric_traits_integer&lt;char&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-107'>
+        <data-member access='public' static='yes'>
+          <!-- static const char __gnu_cxx::__numeric_traits_integer<char>::__min -->
+          <var-decl name='__min' type-id='type-id-43' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const char __gnu_cxx::__numeric_traits_integer<char>::__max -->
+          <var-decl name='__max' type-id='type-id-43' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIcE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const bool __gnu_cxx::__numeric_traits_integer<char>::__is_signed -->
+          <var-decl name='__is_signed' type-id='type-id-42' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const int __gnu_cxx::__numeric_traits_integer<char>::__digits -->
+          <var-decl name='__digits' type-id='type-id-46' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
       <!-- struct __gnu_cxx::__numeric_traits_integer<int> -->
       <class-decl name='__numeric_traits_integer&lt;int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-108'>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<int>::__min -->
-          <var-decl name='__min' type-id='type-id-47' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__minE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+          <var-decl name='__min' type-id='type-id-46' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__minE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<int>::__max -->
-          <var-decl name='__max' type-id='type-id-47' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-46' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const bool __gnu_cxx::__numeric_traits_integer<int>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-43' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+          <var-decl name='__is_signed' type-id='type-id-42' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<int>::__digits -->
-          <var-decl name='__digits' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+          <var-decl name='__digits' type-id='type-id-46' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+      <!-- struct __gnu_cxx::__numeric_traits_integer<long int> -->
+      <class-decl name='__numeric_traits_integer&lt;long int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-109'>
+        <data-member access='public' static='yes'>
+          <!-- static const long int __gnu_cxx::__numeric_traits_integer<long int>::__min -->
+          <var-decl name='__min' type-id='type-id-47' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__minE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const long int __gnu_cxx::__numeric_traits_integer<long int>::__max -->
+          <var-decl name='__max' type-id='type-id-47' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const bool __gnu_cxx::__numeric_traits_integer<long int>::__is_signed -->
+          <var-decl name='__is_signed' type-id='type-id-42' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const int __gnu_cxx::__numeric_traits_integer<long int>::__digits -->
+          <var-decl name='__digits' type-id='type-id-46' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
         </data-member>
       </class-decl>
       <!-- struct __gnu_cxx::__numeric_traits_integer<long unsigned int> -->
-      <class-decl name='__numeric_traits_integer&lt;long unsigned int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-109'>
+      <class-decl name='__numeric_traits_integer&lt;long unsigned int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-110'>
         <data-member access='public' static='yes'>
           <!-- static const unsigned long int __gnu_cxx::__numeric_traits_integer<long unsigned int>::__min -->
-          <var-decl name='__min' type-id='type-id-62' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+          <var-decl name='__min' type-id='type-id-61' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const unsigned long int __gnu_cxx::__numeric_traits_integer<long unsigned int>::__max -->
-          <var-decl name='__max' type-id='type-id-62' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-61' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const bool __gnu_cxx::__numeric_traits_integer<long unsigned int>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-43' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+          <var-decl name='__is_signed' type-id='type-id-42' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<long unsigned int>::__digits -->
-          <var-decl name='__digits' type-id='type-id-47' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerImE8__digitsE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
-        </data-member>
-      </class-decl>
-      <!-- struct __gnu_cxx::__numeric_traits_integer<char> -->
-      <class-decl name='__numeric_traits_integer&lt;char&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-110'>
-        <data-member access='public' static='yes'>
-          <!-- static const char __gnu_cxx::__numeric_traits_integer<char>::__min -->
-          <var-decl name='__min' type-id='type-id-44' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const char __gnu_cxx::__numeric_traits_integer<char>::__max -->
-          <var-decl name='__max' type-id='type-id-44' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIcE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const bool __gnu_cxx::__numeric_traits_integer<char>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-43' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const int __gnu_cxx::__numeric_traits_integer<char>::__digits -->
-          <var-decl name='__digits' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+          <var-decl name='__digits' type-id='type-id-46' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerImE8__digitsE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
         </data-member>
       </class-decl>
       <!-- struct __gnu_cxx::__numeric_traits_integer<short int> -->
       <class-decl name='__numeric_traits_integer&lt;short int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-111'>
         <data-member access='public' static='yes'>
           <!-- static const short int __gnu_cxx::__numeric_traits_integer<short int>::__min -->
-          <var-decl name='__min' type-id='type-id-51' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__minE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+          <var-decl name='__min' type-id='type-id-50' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__minE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const short int __gnu_cxx::__numeric_traits_integer<short int>::__max -->
-          <var-decl name='__max' type-id='type-id-51' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-50' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const bool __gnu_cxx::__numeric_traits_integer<short int>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-43' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+          <var-decl name='__is_signed' type-id='type-id-42' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<short int>::__digits -->
-          <var-decl name='__digits' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
-        </data-member>
-      </class-decl>
-      <!-- struct __gnu_cxx::__numeric_traits_integer<long int> -->
-      <class-decl name='__numeric_traits_integer&lt;long int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-112'>
-        <data-member access='public' static='yes'>
-          <!-- static const long int __gnu_cxx::__numeric_traits_integer<long int>::__min -->
-          <var-decl name='__min' type-id='type-id-48' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__minE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const long int __gnu_cxx::__numeric_traits_integer<long int>::__max -->
-          <var-decl name='__max' type-id='type-id-48' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const bool __gnu_cxx::__numeric_traits_integer<long int>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-43' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const int __gnu_cxx::__numeric_traits_integer<long int>::__digits -->
-          <var-decl name='__digits' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+          <var-decl name='__digits' type-id='type-id-46' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
         </data-member>
       </class-decl>
     </namespace-decl>
-    <!-- wint_t btowc(int) -->
-    <function-decl name='btowc' filepath='/usr/include/wchar.h' line='353' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- char* setlocale(int, const char*) -->
+    <function-decl name='setlocale' filepath='/usr/include/locale.h' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-9'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-21'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-24'/>
+      <!-- char* -->
+      <return type-id='type-id-37'/>
     </function-decl>
-    <!-- wint_t fgetwc(__FILE*) -->
-    <function-decl name='fgetwc' filepath='/usr/include/wchar.h' line='745' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-21'/>
+    <!-- __anonymous_struct__* localeconv() -->
+    <function-decl name='localeconv' filepath='/usr/include/locale.h' line='128' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- __anonymous_struct__* -->
+      <return type-id='type-id-35'/>
     </function-decl>
-    <!-- wchar_t* fgetws(wchar_t*, int, __FILE*) -->
-    <function-decl name='fgetws' filepath='/usr/include/wchar.h' line='774' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- wchar_t* wcscpy(wchar_t*, const wchar_t*) -->
+    <function-decl name='wcscpy' filepath='/usr/include/wchar.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-9'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-35'/>
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
       <!-- wchar_t* -->
-      <return type-id='type-id-75'/>
+      <return type-id='type-id-74'/>
     </function-decl>
-    <!-- wint_t fputwc(wchar_t, __FILE*) -->
-    <function-decl name='fputwc' filepath='/usr/include/wchar.h' line='759' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-20'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-21'/>
-    </function-decl>
-    <!-- int fputws(const wchar_t*, __FILE*) -->
-    <function-decl name='fputws' filepath='/usr/include/wchar.h' line='781' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- int fwide(__FILE*, int) -->
-    <function-decl name='fwide' filepath='/usr/include/wchar.h' line='587' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-9'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- int fwprintf(__FILE*, const wchar_t*, ...) -->
-    <function-decl name='fwprintf' filepath='/usr/include/wchar.h' line='594' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- int fwscanf(__FILE*, const wchar_t*, ...) -->
-    <function-decl name='fwscanf' filepath='/usr/include/wchar.h' line='635' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- wint_t getwc(__FILE*) -->
-    <function-decl name='getwc' filepath='/usr/include/wchar.h' line='746' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-21'/>
-    </function-decl>
-    <!-- wint_t getwchar() -->
-    <function-decl name='getwchar' filepath='/usr/include/wchar.h' line='752' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-21'/>
-    </function-decl>
-    <!-- size_t mbrlen(const char*, size_t, mbstate_t*) -->
-    <function-decl name='mbrlen' filepath='/usr/include/wchar.h' line='376' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-30'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-66'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*) -->
-    <function-decl name='mbrtowc' filepath='/usr/include/wchar.h' line='365' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wcsncpy' filepath='/usr/include/wchar.h' line='150' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-30'/>
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
       <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-66'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- int mbsinit(const mbstate_t*) -->
-    <function-decl name='mbsinit' filepath='/usr/include/wchar.h' line='361' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const mbstate_t*' -->
-      <parameter type-id='type-id-50'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*) -->
-    <function-decl name='mbsrtowcs' filepath='/usr/include/wchar.h' line='408' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
-      <!-- parameter of type 'const char**' -->
-      <parameter type-id='type-id-46'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-66'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- wint_t putwc(wchar_t, __FILE*) -->
-    <function-decl name='putwc' filepath='/usr/include/wchar.h' line='760' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-20'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-21'/>
-    </function-decl>
-    <!-- wint_t putwchar(wchar_t) -->
-    <function-decl name='putwchar' filepath='/usr/include/wchar.h' line='766' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-20'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-21'/>
-    </function-decl>
-    <!-- int swprintf(wchar_t*, size_t, const wchar_t*, ...) -->
-    <function-decl name='swprintf' filepath='/usr/include/wchar.h' line='604' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- int swscanf(const wchar_t*, const wchar_t*, ...) -->
-    <function-decl name='swscanf' filepath='/usr/include/wchar.h' line='645' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- wint_t ungetwc(wint_t, __FILE*) -->
-    <function-decl name='ungetwc' filepath='/usr/include/wchar.h' line='789' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'typedef wint_t' -->
-      <parameter type-id='type-id-21'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-21'/>
-    </function-decl>
-    <!-- int vfwprintf(__FILE*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vfwprintf' filepath='/usr/include/wchar.h' line='612' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-74'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- int vfwscanf(__FILE*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vfwscanf' filepath='/usr/include/wchar.h' line='689' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-74'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- int vswprintf(wchar_t*, size_t, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vswprintf' filepath='/usr/include/wchar.h' line='625' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-74'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- int vswscanf(const wchar_t*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vswscanf' filepath='/usr/include/wchar.h' line='701' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-74'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- int vwprintf(const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vwprintf' filepath='/usr/include/wchar.h' line='620' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-74'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- int vwscanf(const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vwscanf' filepath='/usr/include/wchar.h' line='697' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-74'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- size_t wcrtomb(char*, wchar_t, mbstate_t*) -->
-    <function-decl name='wcrtomb' filepath='/usr/include/wchar.h' line='370' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'char*' -->
-      <parameter type-id='type-id-38'/>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-20'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-66'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-24'/>
+      <parameter type-id='type-id-32'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-74'/>
     </function-decl>
     <!-- wchar_t* wcscat(wchar_t*, const wchar_t*) -->
     <function-decl name='wcscat' filepath='/usr/include/wchar.h' line='155' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
+      <parameter type-id='type-id-74'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- wchar_t* -->
-      <return type-id='type-id-75'/>
+      <return type-id='type-id-74'/>
+    </function-decl>
+    <!-- wchar_t* wcsncat(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wcsncat' filepath='/usr/include/wchar.h' line='158' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-74'/>
     </function-decl>
     <!-- int wcscmp(const wchar_t*, const wchar_t*) -->
     <function-decl name='wcscmp' filepath='/usr/include/wchar.h' line='163' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- int wcsncmp(const wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wcsncmp' filepath='/usr/include/wchar.h' line='166' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
       <!-- int -->
       <return type-id='type-id-9'/>
     </function-decl>
     <!-- int wcscoll(const wchar_t*, const wchar_t*) -->
     <function-decl name='wcscoll' filepath='/usr/include/wchar.h' line='192' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- int -->
       <return type-id='type-id-9'/>
     </function-decl>
-    <!-- wchar_t* wcscpy(wchar_t*, const wchar_t*) -->
-    <function-decl name='wcscpy' filepath='/usr/include/wchar.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- size_t wcsxfrm(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wcsxfrm' filepath='/usr/include/wchar.h' line='196' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
+      <parameter type-id='type-id-74'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-75'/>
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-32'/>
     </function-decl>
     <!-- size_t wcscspn(const wchar_t*, const wchar_t*) -->
     <function-decl name='wcscspn' filepath='/usr/include/wchar.h' line='252' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- typedef size_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- size_t wcsftime(wchar_t*, size_t, const wchar_t*, const tm*) -->
-    <function-decl name='wcsftime' filepath='/usr/include/wchar.h' line='855' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'const tm*' -->
-      <parameter type-id='type-id-61'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- size_t wcslen(const wchar_t*) -->
-    <function-decl name='wcslen' filepath='/usr/include/wchar.h' line='287' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- wchar_t* wcsncat(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wcsncat' filepath='/usr/include/wchar.h' line='158' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-75'/>
-    </function-decl>
-    <!-- int wcsncmp(const wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wcsncmp' filepath='/usr/include/wchar.h' line='166' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wcsncpy' filepath='/usr/include/wchar.h' line='150' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-75'/>
-    </function-decl>
-    <!-- size_t wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*) -->
-    <function-decl name='wcsrtombs' filepath='/usr/include/wchar.h' line='414' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'char*' -->
-      <parameter type-id='type-id-38'/>
-      <!-- parameter of type 'const wchar_t**' -->
-      <parameter type-id='type-id-65'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-66'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-24'/>
+      <return type-id='type-id-32'/>
     </function-decl>
     <!-- size_t wcsspn(const wchar_t*, const wchar_t*) -->
     <function-decl name='wcsspn' filepath='/usr/include/wchar.h' line='256' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- typedef size_t -->
-      <return type-id='type-id-24'/>
+      <return type-id='type-id-32'/>
+    </function-decl>
+    <!-- wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**) -->
+    <function-decl name='wcstok' filepath='/usr/include/wchar.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'wchar_t**' -->
+      <parameter type-id='type-id-75'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-74'/>
+    </function-decl>
+    <!-- size_t wcslen(const wchar_t*) -->
+    <function-decl name='wcslen' filepath='/usr/include/wchar.h' line='287' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-32'/>
+    </function-decl>
+    <!-- int wmemcmp(const wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wmemcmp' filepath='/usr/include/wchar.h' line='325' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wmemcpy' filepath='/usr/include/wchar.h' line='329' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-74'/>
+    </function-decl>
+    <!-- wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wmemmove' filepath='/usr/include/wchar.h' line='334' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-74'/>
+    </function-decl>
+    <!-- wchar_t* wmemset(wchar_t*, wchar_t, size_t) -->
+    <function-decl name='wmemset' filepath='/usr/include/wchar.h' line='338' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-19'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-74'/>
+    </function-decl>
+    <!-- wint_t btowc(int) -->
+    <function-decl name='btowc' filepath='/usr/include/wchar.h' line='353' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-9'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-33'/>
+    </function-decl>
+    <!-- int wctob(wint_t) -->
+    <function-decl name='wctob' filepath='/usr/include/wchar.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'typedef wint_t' -->
+      <parameter type-id='type-id-33'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- int mbsinit(const mbstate_t*) -->
+    <function-decl name='mbsinit' filepath='/usr/include/wchar.h' line='361' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const mbstate_t*' -->
+      <parameter type-id='type-id-49'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*) -->
+    <function-decl name='mbrtowc' filepath='/usr/include/wchar.h' line='365' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-24'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-65'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-32'/>
+    </function-decl>
+    <!-- size_t wcrtomb(char*, wchar_t, mbstate_t*) -->
+    <function-decl name='wcrtomb' filepath='/usr/include/wchar.h' line='370' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'char*' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-19'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-65'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-32'/>
+    </function-decl>
+    <!-- size_t mbrlen(const char*, size_t, mbstate_t*) -->
+    <function-decl name='mbrlen' filepath='/usr/include/wchar.h' line='376' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-24'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-65'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-32'/>
+    </function-decl>
+    <!-- size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*) -->
+    <function-decl name='mbsrtowcs' filepath='/usr/include/wchar.h' line='408' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'const char**' -->
+      <parameter type-id='type-id-45'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-65'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-32'/>
+    </function-decl>
+    <!-- size_t wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*) -->
+    <function-decl name='wcsrtombs' filepath='/usr/include/wchar.h' line='414' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'char*' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'const wchar_t**' -->
+      <parameter type-id='type-id-64'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-65'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-32'/>
     </function-decl>
     <!-- double wcstod(const wchar_t*, wchar_t**) -->
     <function-decl name='wcstod' filepath='/usr/include/wchar.h' line='450' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-76'/>
+      <parameter type-id='type-id-75'/>
       <!-- double -->
       <return type-id='type-id-7'/>
     </function-decl>
     <!-- float wcstof(const wchar_t*, wchar_t**) -->
     <function-decl name='wcstof' filepath='/usr/include/wchar.h' line='457' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-76'/>
+      <parameter type-id='type-id-75'/>
       <!-- float -->
       <return type-id='type-id-8'/>
     </function-decl>
-    <!-- wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**) -->
-    <function-decl name='wcstok' filepath='/usr/include/wchar.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
+    <!-- long double wcstold(const wchar_t*, wchar_t**) -->
+    <function-decl name='wcstold' filepath='/usr/include/wchar.h' line='459' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-76'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-75'/>
+      <parameter type-id='type-id-75'/>
+      <!-- long double -->
+      <return type-id='type-id-10'/>
     </function-decl>
     <!-- long int wcstol(const wchar_t*, wchar_t**, int) -->
     <function-decl name='wcstol' filepath='/usr/include/wchar.h' line='468' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-76'/>
+      <parameter type-id='type-id-75'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-9'/>
       <!-- long int -->
@@ -1025,107 +914,20 @@
     <!-- unsigned long int wcstoul(const wchar_t*, wchar_t**, int) -->
     <function-decl name='wcstoul' filepath='/usr/include/wchar.h' line='473' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-76'/>
+      <parameter type-id='type-id-75'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-9'/>
       <!-- unsigned long int -->
       <return type-id='type-id-15'/>
     </function-decl>
-    <!-- size_t wcsxfrm(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wcsxfrm' filepath='/usr/include/wchar.h' line='196' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- int wctob(wint_t) -->
-    <function-decl name='wctob' filepath='/usr/include/wchar.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'typedef wint_t' -->
-      <parameter type-id='type-id-21'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- int wmemcmp(const wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wmemcmp' filepath='/usr/include/wchar.h' line='325' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wmemcpy' filepath='/usr/include/wchar.h' line='329' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-75'/>
-    </function-decl>
-    <!-- wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wmemmove' filepath='/usr/include/wchar.h' line='334' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-75'/>
-    </function-decl>
-    <!-- wchar_t* wmemset(wchar_t*, wchar_t, size_t) -->
-    <function-decl name='wmemset' filepath='/usr/include/wchar.h' line='338' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-75'/>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-20'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-75'/>
-    </function-decl>
-    <!-- int wprintf(const wchar_t*, ...) -->
-    <function-decl name='wprintf' filepath='/usr/include/wchar.h' line='601' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- int wscanf(const wchar_t*, ...) -->
-    <function-decl name='wscanf' filepath='/usr/include/wchar.h' line='642' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-9'/>
-    </function-decl>
-    <!-- long double wcstold(const wchar_t*, wchar_t**) -->
-    <function-decl name='wcstold' filepath='/usr/include/wchar.h' line='459' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
-      <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-76'/>
-      <!-- long double -->
-      <return type-id='type-id-10'/>
-    </function-decl>
     <!-- long long int wcstoll(const wchar_t*, wchar_t**, int) -->
     <function-decl name='wcstoll' filepath='/usr/include/wchar.h' line='483' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-76'/>
+      <parameter type-id='type-id-75'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-9'/>
       <!-- long long int -->
@@ -1134,79 +936,275 @@
     <!-- long long unsigned int wcstoull(const wchar_t*, wchar_t**, int) -->
     <function-decl name='wcstoull' filepath='/usr/include/wchar.h' line='490' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-64'/>
+      <parameter type-id='type-id-63'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-76'/>
+      <parameter type-id='type-id-75'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-9'/>
       <!-- long long unsigned int -->
       <return type-id='type-id-13'/>
     </function-decl>
-    <!-- char* setlocale(int, const char*) -->
-    <function-decl name='setlocale' filepath='/usr/include/locale.h' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- int fwide(__FILE*, int) -->
+    <function-decl name='fwide' filepath='/usr/include/wchar.h' line='587' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-34'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-9'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-30'/>
-      <!-- char* -->
-      <return type-id='type-id-38'/>
-    </function-decl>
-    <!-- __anonymous_struct__1* localeconv() -->
-    <function-decl name='localeconv' filepath='/usr/include/locale.h' line='128' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- __anonymous_struct__1* -->
-      <return type-id='type-id-36'/>
-    </function-decl>
-    <!-- int iswctype(wint_t, wctype_t) -->
-    <function-decl name='iswctype' filepath='/usr/include/wctype.h' line='175' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'typedef wint_t' -->
-      <parameter type-id='type-id-21'/>
-      <!-- parameter of type 'typedef wctype_t' -->
-      <parameter type-id='type-id-31'/>
       <!-- int -->
       <return type-id='type-id-9'/>
     </function-decl>
-    <!-- wint_t towctrans(wint_t, wctrans_t) -->
-    <function-decl name='towctrans' filepath='/usr/include/wctype.h' line='221' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'typedef wint_t' -->
-      <parameter type-id='type-id-21'/>
-      <!-- parameter of type 'typedef wctrans_t' -->
-      <parameter type-id='type-id-33'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-21'/>
+    <!-- int fwprintf(__FILE*, const wchar_t*, ...) -->
+    <function-decl name='fwprintf' filepath='/usr/include/wchar.h' line='594' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-34'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
     </function-decl>
-    <!-- wctrans_t wctrans(const char*) -->
-    <function-decl name='wctrans' filepath='/usr/include/wctype.h' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-30'/>
-      <!-- typedef wctrans_t -->
+    <!-- int wprintf(const wchar_t*, ...) -->
+    <function-decl name='wprintf' filepath='/usr/include/wchar.h' line='601' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- int swprintf(wchar_t*, size_t, const wchar_t*, ...) -->
+    <function-decl name='swprintf' filepath='/usr/include/wchar.h' line='604' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- int vfwprintf(__FILE*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vfwprintf' filepath='/usr/include/wchar.h' line='612' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-34'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-72'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- int vwprintf(const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vwprintf' filepath='/usr/include/wchar.h' line='620' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-72'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- int vswprintf(wchar_t*, size_t, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vswprintf' filepath='/usr/include/wchar.h' line='625' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-72'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- int fwscanf(__FILE*, const wchar_t*, ...) -->
+    <function-decl name='fwscanf' filepath='/usr/include/wchar.h' line='635' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-34'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- int wscanf(const wchar_t*, ...) -->
+    <function-decl name='wscanf' filepath='/usr/include/wchar.h' line='642' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- int swscanf(const wchar_t*, const wchar_t*, ...) -->
+    <function-decl name='swscanf' filepath='/usr/include/wchar.h' line='645' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- int vfwscanf(__FILE*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vfwscanf' filepath='/usr/include/wchar.h' line='689' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-34'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-72'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- int vwscanf(const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vwscanf' filepath='/usr/include/wchar.h' line='697' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-72'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- int vswscanf(const wchar_t*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vswscanf' filepath='/usr/include/wchar.h' line='701' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-72'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- wint_t fgetwc(__FILE*) -->
+    <function-decl name='fgetwc' filepath='/usr/include/wchar.h' line='745' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-34'/>
+      <!-- typedef wint_t -->
       <return type-id='type-id-33'/>
     </function-decl>
+    <!-- wint_t getwc(__FILE*) -->
+    <function-decl name='getwc' filepath='/usr/include/wchar.h' line='746' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-34'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-33'/>
+    </function-decl>
+    <!-- wint_t getwchar() -->
+    <function-decl name='getwchar' filepath='/usr/include/wchar.h' line='752' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-33'/>
+    </function-decl>
+    <!-- wint_t fputwc(wchar_t, __FILE*) -->
+    <function-decl name='fputwc' filepath='/usr/include/wchar.h' line='759' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-19'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-34'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-33'/>
+    </function-decl>
+    <!-- wint_t putwc(wchar_t, __FILE*) -->
+    <function-decl name='putwc' filepath='/usr/include/wchar.h' line='760' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-19'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-34'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-33'/>
+    </function-decl>
+    <!-- wint_t putwchar(wchar_t) -->
+    <function-decl name='putwchar' filepath='/usr/include/wchar.h' line='766' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-19'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-33'/>
+    </function-decl>
+    <!-- wchar_t* fgetws(wchar_t*, int, __FILE*) -->
+    <function-decl name='fgetws' filepath='/usr/include/wchar.h' line='774' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-9'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-34'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-74'/>
+    </function-decl>
+    <!-- int fputws(const wchar_t*, __FILE*) -->
+    <function-decl name='fputws' filepath='/usr/include/wchar.h' line='781' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-34'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- wint_t ungetwc(wint_t, __FILE*) -->
+    <function-decl name='ungetwc' filepath='/usr/include/wchar.h' line='789' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'typedef wint_t' -->
+      <parameter type-id='type-id-33'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-34'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-33'/>
+    </function-decl>
+    <!-- size_t wcsftime(wchar_t*, size_t, const wchar_t*, const tm*) -->
+    <function-decl name='wcsftime' filepath='/usr/include/wchar.h' line='855' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-74'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-32'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-63'/>
+      <!-- parameter of type 'const tm*' -->
+      <parameter type-id='type-id-60'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-32'/>
+    </function-decl>
     <!-- wctype_t wctype(const char*) -->
     <function-decl name='wctype' filepath='/usr/include/wctype.h' line='171' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-30'/>
+      <parameter type-id='type-id-24'/>
       <!-- typedef wctype_t -->
+      <return type-id='type-id-29'/>
+    </function-decl>
+    <!-- int iswctype(wint_t, wctype_t) -->
+    <function-decl name='iswctype' filepath='/usr/include/wctype.h' line='175' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'typedef wint_t' -->
+      <parameter type-id='type-id-33'/>
+      <!-- parameter of type 'typedef wctype_t' -->
+      <parameter type-id='type-id-29'/>
+      <!-- int -->
+      <return type-id='type-id-9'/>
+    </function-decl>
+    <!-- wctrans_t wctrans(const char*) -->
+    <function-decl name='wctrans' filepath='/usr/include/wctype.h' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-24'/>
+      <!-- typedef wctrans_t -->
       <return type-id='type-id-31'/>
     </function-decl>
-    <!-- void emit(std::string&) -->
-    <function-decl name='emit' mangled-name='_Z4emitRSs' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-first-tu.cc' line='12' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z4emitRSs'>
-      <!-- parameter of type 'std::string&' -->
-      <parameter type-id='type-id-72' name='s' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-first-tu.cc' line='12' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-19'/>
+    <!-- wint_t towctrans(wint_t, wctrans_t) -->
+    <function-decl name='towctrans' filepath='/usr/include/wctype.h' line='221' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'typedef wint_t' -->
+      <parameter type-id='type-id-33'/>
+      <!-- parameter of type 'typedef wctrans_t' -->
+      <parameter type-id='type-id-31'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-33'/>
     </function-decl>
-    <!-- struct _IO_FILE -->
-    <class-decl name='_IO_FILE' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-22'/>
+    <!-- void -->
+    <type-decl name='void' id='type-id-73'/>
   </abi-instr>
   <abi-instr address-size='64' path='test23-second-tu.cc' comp-dir-path='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf' language='LANG_C_plus_plus'>
     <!-- void emit(std::string&, std::string&) -->
     <function-decl name='emit' mangled-name='_Z4emitRSsS_' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-second-tu.cc' line='13' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z4emitRSsS_'>
       <!-- parameter of type 'std::string&' -->
-      <parameter type-id='type-id-72' name='prefix' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-second-tu.cc' line='13' column='1'/>
+      <parameter type-id='type-id-71' name='prefix' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-second-tu.cc' line='13' column='1'/>
       <!-- parameter of type 'std::string&' -->
-      <parameter type-id='type-id-72' name='s' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-second-tu.cc' line='13' column='1'/>
+      <parameter type-id='type-id-71' name='s' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-second-tu.cc' line='13' column='1'/>
       <!-- void -->
-      <return type-id='type-id-19'/>
+      <return type-id='type-id-73'/>
     </function-decl>
   </abi-instr>
 </abi-corpus>
diff --git a/tests/data/test-annotate/libtest24-drop-fns-2.so.abi b/tests/data/test-annotate/libtest24-drop-fns-2.so.abi
index 36cb46a..0cdc04a 100644
--- a/tests/data/test-annotate/libtest24-drop-fns-2.so.abi
+++ b/tests/data/test-annotate/libtest24-drop-fns-2.so.abi
@@ -1,4 +1,4 @@
-<abi-corpus version='2.0' architecture='elf-amd-x86_64'>
+<abi-corpus version='2.1' architecture='elf-amd-x86_64'>
   <elf-needed>
     <dependency name='libgcc_s.so.1'/>
     <dependency name='libc.so.6'/>
@@ -75,134 +75,53 @@
     </array-type-def>
     <!-- variadic parameter type -->
     <type-decl name='variadic parameter type' id='type-id-20'/>
-    <!-- void -->
-    <type-decl name='void' id='type-id-21'/>
     <!-- wchar_t -->
-    <type-decl name='wchar_t' size-in-bits='32' id='type-id-22'/>
+    <type-decl name='wchar_t' size-in-bits='32' id='type-id-21'/>
+    <!-- typedef int __int32_t -->
+    <typedef-decl name='__int32_t' type-id='type-id-11' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-22'/>
     <!-- typedef int _Atomic_word -->
     <typedef-decl name='_Atomic_word' type-id='type-id-11' filepath='/usr/include/c++/5.3.1/x86_64-redhat-linux/bits/atomic_word.h' line='32' column='1' id='type-id-23'/>
-    <!-- typedef unsigned int wint_t -->
-    <typedef-decl name='wint_t' type-id='type-id-7' filepath='/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h' line='357' column='1' id='type-id-24'/>
-    <!-- typedef _IO_FILE __FILE -->
-    <typedef-decl name='__FILE' type-id='type-id-25' filepath='/usr/include/stdio.h' line='64' column='1' id='type-id-26'/>
-    <!-- typedef unsigned long int size_t -->
-    <typedef-decl name='size_t' type-id='type-id-17' filepath='/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h' line='216' column='1' id='type-id-27'/>
-    <!-- typedef __mbstate_t mbstate_t -->
-    <typedef-decl name='mbstate_t' type-id='type-id-28' filepath='/usr/include/wchar.h' line='106' column='1' id='type-id-29'/>
-    <!-- typedef __anonymous_struct__ __mbstate_t -->
-    <typedef-decl name='__mbstate_t' type-id='type-id-30' filepath='/usr/include/wchar.h' line='94' column='1' id='type-id-28'/>
-    <!-- struct {int __count; union {unsigned int __wch; char __wchb[4];} __value;} -->
-    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-28' visibility='default' filepath='/usr/include/wchar.h' line='83' column='1' id='type-id-30'>
-      <member-type access='public'>
-        <!-- union {unsigned int __wch; char __wchb[4];} -->
-        <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='86' column='1' id='type-id-31'>
-          <data-member access='public'>
-            <!-- unsigned int __wch -->
-            <var-decl name='__wch' type-id='type-id-7' visibility='default' filepath='/usr/include/wchar.h' line='88' column='1'/>
-          </data-member>
-          <data-member access='public'>
-            <!-- char __wchb[4] -->
-            <var-decl name='__wchb' type-id='type-id-3' visibility='default' filepath='/usr/include/wchar.h' line='92' column='1'/>
-          </data-member>
-        </union-decl>
-      </member-type>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int __count -->
-        <var-decl name='__count' type-id='type-id-11' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- union {unsigned int __wch; char __wchb[4];} __value -->
-        <var-decl name='__value' type-id='type-id-31' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- struct tm -->
-    <class-decl name='tm' size-in-bits='448' is-struct='yes' visibility='default' filepath='/usr/include/time.h' line='133' column='1' id='type-id-32'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int tm::tm_sec -->
-        <var-decl name='tm_sec' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='135' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- int tm::tm_min -->
-        <var-decl name='tm_min' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='136' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int tm::tm_hour -->
-        <var-decl name='tm_hour' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='137' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='96'>
-        <!-- int tm::tm_mday -->
-        <var-decl name='tm_mday' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='138' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int tm::tm_mon -->
-        <var-decl name='tm_mon' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='139' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int tm::tm_year -->
-        <var-decl name='tm_year' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='140' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- int tm::tm_wday -->
-        <var-decl name='tm_wday' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='141' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='224'>
-        <!-- int tm::tm_yday -->
-        <var-decl name='tm_yday' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='142' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- int tm::tm_isdst -->
-        <var-decl name='tm_isdst' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='143' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- long int tm::tm_gmtoff -->
-        <var-decl name='tm_gmtoff' type-id='type-id-13' visibility='default' filepath='/usr/include/time.h' line='146' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- const char* tm::tm_zone -->
-        <var-decl name='tm_zone' type-id='type-id-33' visibility='default' filepath='/usr/include/time.h' line='147' column='1'/>
-      </data-member>
-    </class-decl>
     <!-- struct lconv -->
-    <class-decl name='lconv' size-in-bits='768' is-struct='yes' visibility='default' filepath='/usr/include/locale.h' line='53' column='1' id='type-id-34'>
+    <class-decl name='lconv' size-in-bits='768' is-struct='yes' visibility='default' filepath='/usr/include/locale.h' line='53' column='1' id='type-id-24'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- char* lconv::decimal_point -->
-        <var-decl name='decimal_point' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='57' column='1'/>
+        <var-decl name='decimal_point' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='57' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- char* lconv::thousands_sep -->
-        <var-decl name='thousands_sep' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='58' column='1'/>
+        <var-decl name='thousands_sep' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='58' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- char* lconv::grouping -->
-        <var-decl name='grouping' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='64' column='1'/>
+        <var-decl name='grouping' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='64' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- char* lconv::int_curr_symbol -->
-        <var-decl name='int_curr_symbol' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='70' column='1'/>
+        <var-decl name='int_curr_symbol' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='70' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- char* lconv::currency_symbol -->
-        <var-decl name='currency_symbol' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='71' column='1'/>
+        <var-decl name='currency_symbol' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='71' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- char* lconv::mon_decimal_point -->
-        <var-decl name='mon_decimal_point' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='72' column='1'/>
+        <var-decl name='mon_decimal_point' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='72' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='384'>
         <!-- char* lconv::mon_thousands_sep -->
-        <var-decl name='mon_thousands_sep' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='73' column='1'/>
+        <var-decl name='mon_thousands_sep' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='73' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='448'>
         <!-- char* lconv::mon_grouping -->
-        <var-decl name='mon_grouping' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='74' column='1'/>
+        <var-decl name='mon_grouping' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='74' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='512'>
         <!-- char* lconv::positive_sign -->
-        <var-decl name='positive_sign' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='75' column='1'/>
+        <var-decl name='positive_sign' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='75' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='576'>
         <!-- char* lconv::negative_sign -->
-        <var-decl name='negative_sign' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='76' column='1'/>
+        <var-decl name='negative_sign' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='76' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='640'>
         <!-- char lconv::int_frac_digits -->
@@ -261,183 +180,266 @@
         <var-decl name='int_n_sign_posn' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='111' column='1'/>
       </data-member>
     </class-decl>
+    <!-- typedef _IO_FILE __FILE -->
+    <typedef-decl name='__FILE' type-id='type-id-26' filepath='/usr/include/stdio.h' line='64' column='1' id='type-id-27'/>
+    <!-- struct tm -->
+    <class-decl name='tm' size-in-bits='448' is-struct='yes' visibility='default' filepath='/usr/include/time.h' line='133' column='1' id='type-id-28'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- int tm::tm_sec -->
+        <var-decl name='tm_sec' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='135' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <!-- int tm::tm_min -->
+        <var-decl name='tm_min' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='136' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- int tm::tm_hour -->
+        <var-decl name='tm_hour' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='137' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <!-- int tm::tm_mday -->
+        <var-decl name='tm_mday' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='138' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- int tm::tm_mon -->
+        <var-decl name='tm_mon' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='139' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <!-- int tm::tm_year -->
+        <var-decl name='tm_year' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='140' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- int tm::tm_wday -->
+        <var-decl name='tm_wday' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='141' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='224'>
+        <!-- int tm::tm_yday -->
+        <var-decl name='tm_yday' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='142' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- int tm::tm_isdst -->
+        <var-decl name='tm_isdst' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='143' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- long int tm::tm_gmtoff -->
+        <var-decl name='tm_gmtoff' type-id='type-id-13' visibility='default' filepath='/usr/include/time.h' line='146' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- const char* tm::tm_zone -->
+        <var-decl name='tm_zone' type-id='type-id-29' visibility='default' filepath='/usr/include/time.h' line='147' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- struct __mbstate_t -->
+    <class-decl name='__mbstate_t' size-in-bits='64' is-struct='yes' naming-typedef-id='type-id-30' visibility='default' filepath='/usr/include/wchar.h' line='83' column='1' id='type-id-31'>
+      <member-type access='public'>
+        <!-- union {unsigned int __wch; char __wchb[4];} -->
+        <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='86' column='1' id='type-id-32'>
+          <data-member access='public'>
+            <!-- unsigned int __wch -->
+            <var-decl name='__wch' type-id='type-id-7' visibility='default' filepath='/usr/include/wchar.h' line='88' column='1'/>
+          </data-member>
+          <data-member access='public'>
+            <!-- char __wchb[4] -->
+            <var-decl name='__wchb' type-id='type-id-3' visibility='default' filepath='/usr/include/wchar.h' line='92' column='1'/>
+          </data-member>
+        </union-decl>
+      </member-type>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- int __mbstate_t::__count -->
+        <var-decl name='__count' type-id='type-id-11' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <!-- union {unsigned int __wch; char __wchb[4];} __mbstate_t::__value -->
+        <var-decl name='__value' type-id='type-id-32' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef __mbstate_t __mbstate_t -->
+    <typedef-decl name='__mbstate_t' type-id='type-id-31' filepath='/usr/include/wchar.h' line='94' column='1' id='type-id-30'/>
+    <!-- typedef __mbstate_t mbstate_t -->
+    <typedef-decl name='mbstate_t' type-id='type-id-30' filepath='/usr/include/wchar.h' line='106' column='1' id='type-id-33'/>
     <!-- typedef unsigned long int wctype_t -->
-    <typedef-decl name='wctype_t' type-id='type-id-17' filepath='/usr/include/wctype.h' line='52' column='1' id='type-id-36'/>
+    <typedef-decl name='wctype_t' type-id='type-id-17' filepath='/usr/include/wctype.h' line='52' column='1' id='type-id-34'/>
     <!-- typedef const __int32_t* wctrans_t -->
-    <typedef-decl name='wctrans_t' type-id='type-id-37' filepath='/usr/include/wctype.h' line='186' column='1' id='type-id-38'/>
-    <!-- typedef int __int32_t -->
-    <typedef-decl name='__int32_t' type-id='type-id-11' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-39'/>
+    <typedef-decl name='wctrans_t' type-id='type-id-35' filepath='/usr/include/wctype.h' line='186' column='1' id='type-id-36'/>
+    <!-- typedef unsigned long int size_t -->
+    <typedef-decl name='size_t' type-id='type-id-17' filepath='/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h' line='216' column='1' id='type-id-37'/>
+    <!-- typedef unsigned int wint_t -->
+    <typedef-decl name='wint_t' type-id='type-id-7' filepath='/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h' line='357' column='1' id='type-id-38'/>
     <!-- __FILE* -->
-    <pointer-type-def type-id='type-id-26' size-in-bits='64' id='type-id-40'/>
+    <pointer-type-def type-id='type-id-27' size-in-bits='64' id='type-id-39'/>
     <!-- __gnu_cxx::new_allocator<char>* -->
-    <pointer-type-def type-id='type-id-41' size-in-bits='64' id='type-id-42'/>
+    <pointer-type-def type-id='type-id-40' size-in-bits='64' id='type-id-41'/>
     <!-- char& -->
-    <reference-type-def kind='lvalue' type-id='type-id-2' size-in-bits='64' id='type-id-43'/>
+    <reference-type-def kind='lvalue' type-id='type-id-2' size-in-bits='64' id='type-id-42'/>
     <!-- char* -->
-    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-35'/>
+    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-25'/>
     <!-- const __gnu_cxx::new_allocator<char> -->
-    <qualified-type-def type-id='type-id-41' const='yes' id='type-id-44'/>
+    <qualified-type-def type-id='type-id-40' const='yes' id='type-id-43'/>
     <!-- const __gnu_cxx::new_allocator<char>& -->
-    <reference-type-def kind='lvalue' type-id='type-id-44' size-in-bits='64' id='type-id-45'/>
+    <reference-type-def kind='lvalue' type-id='type-id-43' size-in-bits='64' id='type-id-44'/>
     <!-- const __gnu_cxx::new_allocator<char>* -->
-    <pointer-type-def type-id='type-id-44' size-in-bits='64' id='type-id-46'/>
+    <pointer-type-def type-id='type-id-43' size-in-bits='64' id='type-id-45'/>
     <!-- const __int32_t -->
-    <qualified-type-def type-id='type-id-39' const='yes' id='type-id-47'/>
+    <qualified-type-def type-id='type-id-22' const='yes' id='type-id-46'/>
     <!-- const __int32_t* -->
-    <pointer-type-def type-id='type-id-47' size-in-bits='64' id='type-id-37'/>
+    <pointer-type-def type-id='type-id-46' size-in-bits='64' id='type-id-35'/>
     <!-- const bool -->
-    <qualified-type-def type-id='type-id-1' const='yes' id='type-id-48'/>
+    <qualified-type-def type-id='type-id-1' const='yes' id='type-id-47'/>
     <!-- const char -->
-    <qualified-type-def type-id='type-id-2' const='yes' id='type-id-49'/>
+    <qualified-type-def type-id='type-id-2' const='yes' id='type-id-48'/>
     <!-- const char& -->
-    <reference-type-def kind='lvalue' type-id='type-id-49' size-in-bits='64' id='type-id-50'/>
+    <reference-type-def kind='lvalue' type-id='type-id-48' size-in-bits='64' id='type-id-49'/>
     <!-- const char* -->
-    <pointer-type-def type-id='type-id-49' size-in-bits='64' id='type-id-33'/>
+    <pointer-type-def type-id='type-id-48' size-in-bits='64' id='type-id-29'/>
     <!-- const char** -->
-    <pointer-type-def type-id='type-id-33' size-in-bits='64' id='type-id-51'/>
+    <pointer-type-def type-id='type-id-29' size-in-bits='64' id='type-id-50'/>
     <!-- const int -->
-    <qualified-type-def type-id='type-id-11' const='yes' id='type-id-52'/>
+    <qualified-type-def type-id='type-id-11' const='yes' id='type-id-51'/>
     <!-- const long int -->
-    <qualified-type-def type-id='type-id-13' const='yes' id='type-id-53'/>
+    <qualified-type-def type-id='type-id-13' const='yes' id='type-id-52'/>
     <!-- const mbstate_t -->
-    <qualified-type-def type-id='type-id-29' const='yes' id='type-id-54'/>
+    <qualified-type-def type-id='type-id-33' const='yes' id='type-id-53'/>
     <!-- const mbstate_t* -->
-    <pointer-type-def type-id='type-id-54' size-in-bits='64' id='type-id-55'/>
+    <pointer-type-def type-id='type-id-53' size-in-bits='64' id='type-id-54'/>
     <!-- const short int -->
-    <qualified-type-def type-id='type-id-16' const='yes' id='type-id-56'/>
+    <qualified-type-def type-id='type-id-16' const='yes' id='type-id-55'/>
     <!-- const std::allocator<char> -->
-    <qualified-type-def type-id='type-id-57' const='yes' id='type-id-58'/>
+    <qualified-type-def type-id='type-id-56' const='yes' id='type-id-57'/>
     <!-- const std::allocator<char>& -->
-    <reference-type-def kind='lvalue' type-id='type-id-58' size-in-bits='64' id='type-id-59'/>
+    <reference-type-def kind='lvalue' type-id='type-id-57' size-in-bits='64' id='type-id-58'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> > -->
-    <qualified-type-def type-id='type-id-60' const='yes' id='type-id-61'/>
+    <qualified-type-def type-id='type-id-59' const='yes' id='type-id-60'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >& -->
-    <qualified-type-def type-id='type-id-62' id='type-id-63'/>
-    <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >& -->
-    <reference-type-def kind='lvalue' type-id='type-id-61' size-in-bits='64' id='type-id-62'/>
+    <reference-type-def kind='lvalue' type-id='type-id-60' size-in-bits='64' id='type-id-61'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >* -->
-    <pointer-type-def type-id='type-id-61' size-in-bits='64' id='type-id-64'/>
+    <pointer-type-def type-id='type-id-60' size-in-bits='64' id='type-id-62'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep -->
-    <qualified-type-def type-id='type-id-65' const='yes' id='type-id-66'/>
+    <qualified-type-def type-id='type-id-63' const='yes' id='type-id-64'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep* -->
-    <pointer-type-def type-id='type-id-66' size-in-bits='64' id='type-id-67'/>
+    <pointer-type-def type-id='type-id-64' size-in-bits='64' id='type-id-65'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type -->
-    <qualified-type-def type-id='type-id-68' const='yes' id='type-id-69'/>
+    <qualified-type-def type-id='type-id-66' const='yes' id='type-id-67'/>
     <!-- const std::char_traits<char>::char_type -->
-    <qualified-type-def type-id='type-id-70' const='yes' id='type-id-71'/>
+    <qualified-type-def type-id='type-id-68' const='yes' id='type-id-69'/>
     <!-- const std::char_traits<char>::char_type& -->
-    <reference-type-def kind='lvalue' type-id='type-id-71' size-in-bits='64' id='type-id-72'/>
+    <reference-type-def kind='lvalue' type-id='type-id-69' size-in-bits='64' id='type-id-70'/>
     <!-- const std::char_traits<char>::char_type* -->
-    <pointer-type-def type-id='type-id-71' size-in-bits='64' id='type-id-73'/>
+    <pointer-type-def type-id='type-id-69' size-in-bits='64' id='type-id-71'/>
     <!-- const std::char_traits<char>::int_type -->
-    <qualified-type-def type-id='type-id-74' const='yes' id='type-id-75'/>
+    <qualified-type-def type-id='type-id-72' const='yes' id='type-id-73'/>
     <!-- const std::char_traits<char>::int_type& -->
-    <reference-type-def kind='lvalue' type-id='type-id-75' size-in-bits='64' id='type-id-76'/>
+    <reference-type-def kind='lvalue' type-id='type-id-73' size-in-bits='64' id='type-id-74'/>
     <!-- const std::string -->
-    <qualified-type-def type-id='type-id-77' const='yes' id='type-id-78'/>
+    <qualified-type-def type-id='type-id-75' const='yes' id='type-id-76'/>
     <!-- const std::string& -->
-    <qualified-type-def type-id='type-id-79' id='type-id-80'/>
-    <!-- const std::string& -->
-    <reference-type-def kind='lvalue' type-id='type-id-78' size-in-bits='64' id='type-id-79'/>
+    <reference-type-def kind='lvalue' type-id='type-id-76' size-in-bits='64' id='type-id-77'/>
     <!-- const tm -->
-    <qualified-type-def type-id='type-id-32' const='yes' id='type-id-81'/>
+    <qualified-type-def type-id='type-id-28' const='yes' id='type-id-78'/>
     <!-- const tm* -->
-    <pointer-type-def type-id='type-id-81' size-in-bits='64' id='type-id-82'/>
+    <pointer-type-def type-id='type-id-78' size-in-bits='64' id='type-id-79'/>
     <!-- const unsigned long int -->
-    <qualified-type-def type-id='type-id-17' const='yes' id='type-id-83'/>
+    <qualified-type-def type-id='type-id-17' const='yes' id='type-id-80'/>
     <!-- const wchar_t -->
-    <qualified-type-def type-id='type-id-22' const='yes' id='type-id-84'/>
+    <qualified-type-def type-id='type-id-21' const='yes' id='type-id-81'/>
     <!-- const wchar_t* -->
-    <pointer-type-def type-id='type-id-84' size-in-bits='64' id='type-id-85'/>
+    <pointer-type-def type-id='type-id-81' size-in-bits='64' id='type-id-82'/>
     <!-- const wchar_t** -->
-    <pointer-type-def type-id='type-id-85' size-in-bits='64' id='type-id-86'/>
+    <pointer-type-def type-id='type-id-82' size-in-bits='64' id='type-id-83'/>
     <!-- lconv* -->
-    <pointer-type-def type-id='type-id-34' size-in-bits='64' id='type-id-87'/>
+    <pointer-type-def type-id='type-id-24' size-in-bits='64' id='type-id-84'/>
     <!-- mbstate_t* -->
-    <pointer-type-def type-id='type-id-29' size-in-bits='64' id='type-id-88'/>
+    <pointer-type-def type-id='type-id-33' size-in-bits='64' id='type-id-85'/>
     <!-- std::allocator<char>* -->
-    <pointer-type-def type-id='type-id-57' size-in-bits='64' id='type-id-89'/>
+    <pointer-type-def type-id='type-id-56' size-in-bits='64' id='type-id-86'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >& -->
-    <reference-type-def kind='lvalue' type-id='type-id-60' size-in-bits='64' id='type-id-90'/>
+    <reference-type-def kind='lvalue' type-id='type-id-59' size-in-bits='64' id='type-id-87'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >* -->
-    <pointer-type-def type-id='type-id-60' size-in-bits='64' id='type-id-91'/>
+    <pointer-type-def type-id='type-id-59' size-in-bits='64' id='type-id-88'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider* -->
-    <pointer-type-def type-id='type-id-92' size-in-bits='64' id='type-id-93'/>
+    <pointer-type-def type-id='type-id-89' size-in-bits='64' id='type-id-90'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep& -->
-    <reference-type-def kind='lvalue' type-id='type-id-65' size-in-bits='64' id='type-id-94'/>
+    <reference-type-def kind='lvalue' type-id='type-id-63' size-in-bits='64' id='type-id-91'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep* -->
-    <pointer-type-def type-id='type-id-65' size-in-bits='64' id='type-id-95'/>
+    <pointer-type-def type-id='type-id-63' size-in-bits='64' id='type-id-92'/>
     <!-- std::char_traits<char>::char_type& -->
-    <reference-type-def kind='lvalue' type-id='type-id-70' size-in-bits='64' id='type-id-96'/>
+    <reference-type-def kind='lvalue' type-id='type-id-68' size-in-bits='64' id='type-id-93'/>
     <!-- std::char_traits<char>::char_type* -->
-    <pointer-type-def type-id='type-id-70' size-in-bits='64' id='type-id-97'/>
+    <pointer-type-def type-id='type-id-68' size-in-bits='64' id='type-id-94'/>
     <!-- std::ostream* -->
-    <pointer-type-def type-id='type-id-98' size-in-bits='64' id='type-id-99'/>
+    <pointer-type-def type-id='type-id-95' size-in-bits='64' id='type-id-96'/>
     <!-- typedef __va_list_tag __va_list_tag* -->
-    <pointer-type-def type-id='type-id-6' size-in-bits='64' id='type-id-100'/>
+    <pointer-type-def type-id='type-id-6' size-in-bits='64' id='type-id-97'/>
     <!-- void* -->
-    <pointer-type-def type-id='type-id-21' size-in-bits='64' id='type-id-8'/>
+    <pointer-type-def type-id='type-id-98' size-in-bits='64' id='type-id-8'/>
     <!-- wchar_t* -->
-    <pointer-type-def type-id='type-id-22' size-in-bits='64' id='type-id-101'/>
+    <pointer-type-def type-id='type-id-21' size-in-bits='64' id='type-id-99'/>
     <!-- wchar_t** -->
-    <pointer-type-def type-id='type-id-101' size-in-bits='64' id='type-id-102'/>
+    <pointer-type-def type-id='type-id-99' size-in-bits='64' id='type-id-100'/>
+    <!-- struct _IO_FILE -->
+    <class-decl name='_IO_FILE' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-26'/>
     <!-- namespace std -->
     <namespace-decl name='std'>
+      <!-- class std::allocator<char> -->
+      <class-decl name='allocator&lt;char&gt;' size-in-bits='8' visibility='default' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='92' column='1' id='type-id-56'>
+        <!-- class __gnu_cxx::new_allocator<char> -->
+        <base-class access='public' layout-offset-in-bits='0' type-id='type-id-40'/>
+        <member-type access='public'>
+          <!-- typedef std::size_t std::allocator<char>::size_type -->
+          <typedef-decl name='size_type' type-id='type-id-101' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='95' column='1' id='type-id-102'/>
+        </member-type>
+        <member-type access='public'>
+          <!-- typedef char& std::allocator<char>::reference -->
+          <typedef-decl name='reference' type-id='type-id-42' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='99' column='1' id='type-id-103'/>
+        </member-type>
+        <member-type access='public'>
+          <!-- typedef const char& std::allocator<char>::const_reference -->
+          <typedef-decl name='const_reference' type-id='type-id-49' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='100' column='1' id='type-id-104'/>
+        </member-type>
+      </class-decl>
       <!-- class std::basic_string<char, std::char_traits<char>, std::allocator<char> > -->
-      <class-decl name='basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;' size-in-bits='64' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2510' column='1' id='type-id-60'>
-        <member-type access='private'>
-          <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider -->
-          <class-decl name='_Alloc_hider' size-in-bits='64' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2670' column='1' id='type-id-92'>
-            <!-- class std::allocator<char> -->
-            <base-class access='public' layout-offset-in-bits='0' type-id='type-id-57'/>
-            <data-member access='public' layout-offset-in-bits='0'>
-              <!-- char* std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider::_M_p -->
-              <var-decl name='_M_p' type-id='type-id-35' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2675' column='1'/>
-            </data-member>
-          </class-decl>
+      <class-decl name='basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;' size-in-bits='64' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2510' column='1' id='type-id-59'>
+        <member-type access='public'>
+          <!-- typedef std::allocator<char> std::basic_string<char, std::char_traits<char>, std::allocator<char> >::allocator_type -->
+          <typedef-decl name='allocator_type' type-id='type-id-56' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2518' column='1' id='type-id-105'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef std::allocator<char>::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type -->
-          <typedef-decl name='size_type' type-id='type-id-103' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2519' column='1' id='type-id-68'/>
-        </member-type>
-        <member-type access='public'>
-          <!-- typedef std::allocator<char> std::basic_string<char, std::char_traits<char>, std::allocator<char> >::allocator_type -->
-          <typedef-decl name='allocator_type' type-id='type-id-57' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2518' column='1' id='type-id-104'/>
+          <typedef-decl name='size_type' type-id='type-id-102' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2519' column='1' id='type-id-66'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef std::allocator<char>::reference std::basic_string<char, std::char_traits<char>, std::allocator<char> >::reference -->
-          <typedef-decl name='reference' type-id='type-id-106' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2521' column='1' id='type-id-105'/>
+          <typedef-decl name='reference' type-id='type-id-103' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2521' column='1' id='type-id-106'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef std::allocator<char>::const_reference std::basic_string<char, std::char_traits<char>, std::allocator<char> >::const_reference -->
-          <typedef-decl name='const_reference' type-id='type-id-108' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2522' column='1' id='type-id-107'/>
+          <typedef-decl name='const_reference' type-id='type-id-104' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2522' column='1' id='type-id-107'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > std::basic_string<char, std::char_traits<char>, std::allocator<char> >::iterator -->
-          <typedef-decl name='iterator' type-id='type-id-110' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2525' column='1' id='type-id-109'/>
+          <typedef-decl name='iterator' type-id='type-id-108' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2525' column='1' id='type-id-109'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > std::basic_string<char, std::char_traits<char>, std::allocator<char> >::const_iterator -->
-          <typedef-decl name='const_iterator' type-id='type-id-112' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2527' column='1' id='type-id-111'/>
+          <typedef-decl name='const_iterator' type-id='type-id-110' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2527' column='1' id='type-id-111'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef std::reverse_iterator<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::basic_string<char, std::char_traits<char>, std::allocator<char> >::const_reverse_iterator -->
-          <typedef-decl name='const_reverse_iterator' type-id='type-id-114' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2528' column='1' id='type-id-113'/>
+          <typedef-decl name='const_reverse_iterator' type-id='type-id-112' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2528' column='1' id='type-id-113'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef std::reverse_iterator<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::basic_string<char, std::char_traits<char>, std::allocator<char> >::reverse_iterator -->
-          <typedef-decl name='reverse_iterator' type-id='type-id-116' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2529' column='1' id='type-id-115'/>
+          <typedef-decl name='reverse_iterator' type-id='type-id-114' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2529' column='1' id='type-id-115'/>
         </member-type>
         <member-type access='private'>
           <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base -->
-          <class-decl name='_Rep_base' size-in-bits='192' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2546' column='1' id='type-id-117'>
+          <class-decl name='_Rep_base' size-in-bits='192' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2546' column='1' id='type-id-116'>
             <data-member access='public' layout-offset-in-bits='0'>
               <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base::_M_length -->
-              <var-decl name='_M_length' type-id='type-id-68' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2548' column='1'/>
+              <var-decl name='_M_length' type-id='type-id-66' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2548' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='64'>
               <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base::_M_capacity -->
-              <var-decl name='_M_capacity' type-id='type-id-68' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2549' column='1'/>
+              <var-decl name='_M_capacity' type-id='type-id-66' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2549' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='128'>
               <!-- _Atomic_word std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base::_M_refcount -->
@@ -447,16 +449,16 @@
         </member-type>
         <member-type access='private'>
           <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep -->
-          <class-decl name='_Rep' size-in-bits='192' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2553' column='1' id='type-id-65'>
+          <class-decl name='_Rep' size-in-bits='192' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2553' column='1' id='type-id-63'>
             <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base -->
-            <base-class access='public' layout-offset-in-bits='0' type-id='type-id-117'/>
+            <base-class access='public' layout-offset-in-bits='0' type-id='type-id-116'/>
             <data-member access='public' static='yes'>
               <!-- static const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_max_size -->
-              <var-decl name='_S_max_size' type-id='type-id-69' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='494' column='1'/>
+              <var-decl name='_S_max_size' type-id='type-id-67' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='494' column='1'/>
             </data-member>
             <data-member access='public' static='yes'>
               <!-- static const char std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_terminal -->
-              <var-decl name='_S_terminal' type-id='type-id-49' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='499' column='1'/>
+              <var-decl name='_S_terminal' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='499' column='1'/>
             </data-member>
             <data-member access='public' static='yes'>
               <!-- static unsigned long int std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_empty_rep_storage[] -->
@@ -464,604 +466,496 @@
             </data-member>
           </class-decl>
         </member-type>
+        <member-type access='private'>
+          <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider -->
+          <class-decl name='_Alloc_hider' size-in-bits='64' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2670' column='1' id='type-id-89'>
+            <!-- class std::allocator<char> -->
+            <base-class access='public' layout-offset-in-bits='0' type-id='type-id-56'/>
+            <data-member access='public' layout-offset-in-bits='0'>
+              <!-- char* std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider::_M_p -->
+              <var-decl name='_M_p' type-id='type-id-25' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2675' column='1'/>
+            </data-member>
+          </class-decl>
+        </member-type>
         <data-member access='public' static='yes'>
           <!-- static const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::npos -->
-          <var-decl name='npos' type-id='type-id-69' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2683' column='1'/>
+          <var-decl name='npos' type-id='type-id-67' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2683' column='1'/>
         </data-member>
         <data-member access='private' layout-offset-in-bits='0'>
           <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dataplus -->
-          <var-decl name='_M_dataplus' type-id='type-id-92' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2687' column='1'/>
+          <var-decl name='_M_dataplus' type-id='type-id-89' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2687' column='1'/>
         </data-member>
       </class-decl>
-      <!-- class std::allocator<char> -->
-      <class-decl name='allocator&lt;char&gt;' size-in-bits='8' visibility='default' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='92' column='1' id='type-id-57'>
-        <!-- class __gnu_cxx::new_allocator<char> -->
-        <base-class access='public' layout-offset-in-bits='0' type-id='type-id-41'/>
-        <member-type access='public'>
-          <!-- typedef std::size_t std::allocator<char>::size_type -->
-          <typedef-decl name='size_type' type-id='type-id-118' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='95' column='1' id='type-id-103'/>
-        </member-type>
-        <member-type access='public'>
-          <!-- typedef char& std::allocator<char>::reference -->
-          <typedef-decl name='reference' type-id='type-id-43' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='99' column='1' id='type-id-106'/>
-        </member-type>
-        <member-type access='public'>
-          <!-- typedef const char& std::allocator<char>::const_reference -->
-          <typedef-decl name='const_reference' type-id='type-id-50' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='100' column='1' id='type-id-108'/>
-        </member-type>
-      </class-decl>
-      <!-- typedef unsigned long int std::size_t -->
-      <typedef-decl name='size_t' type-id='type-id-17' filepath='/usr/include/c++/5.3.1/x86_64-redhat-linux/bits/c++config.h' line='1969' column='1' id='type-id-118'/>
       <!-- struct std::char_traits<char> -->
-      <class-decl name='char_traits&lt;char&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='233' column='1' id='type-id-119'>
+      <class-decl name='char_traits&lt;char&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='233' column='1' id='type-id-117'>
         <member-type access='public'>
           <!-- typedef char std::char_traits<char>::char_type -->
-          <typedef-decl name='char_type' type-id='type-id-2' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='235' column='1' id='type-id-70'/>
+          <typedef-decl name='char_type' type-id='type-id-2' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='235' column='1' id='type-id-68'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef int std::char_traits<char>::int_type -->
-          <typedef-decl name='int_type' type-id='type-id-11' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='236' column='1' id='type-id-74'/>
+          <typedef-decl name='int_type' type-id='type-id-11' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='236' column='1' id='type-id-72'/>
         </member-type>
         <member-function access='public' static='yes'>
           <!-- std::size_t std::char_traits<char>::length() -->
           <function-decl name='length' mangled-name='_ZNSt11char_traitsIcE6lengthEPKc' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='266' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNSt11char_traitsIcE6lengthEPKc'>
             <!-- parameter of type 'const std::char_traits<char>::char_type*' -->
-            <parameter type-id='type-id-73'/>
+            <parameter type-id='type-id-71'/>
             <!-- typedef std::size_t -->
-            <return type-id='type-id-118'/>
+            <return type-id='type-id-101'/>
           </function-decl>
         </member-function>
       </class-decl>
       <!-- typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::string -->
-      <typedef-decl name='string' type-id='type-id-60' filepath='/usr/include/c++/5.3.1/bits/stringfwd.h' line='74' column='1' id='type-id-77'/>
+      <typedef-decl name='string' type-id='type-id-59' filepath='/usr/include/c++/5.3.1/bits/stringfwd.h' line='74' column='1' id='type-id-75'/>
       <!-- typedef std::basic_ostream<char, std::char_traits<char> > std::ostream -->
-      <typedef-decl name='ostream' type-id='type-id-120' filepath='/usr/include/c++/5.3.1/iosfwd' line='141' column='1' id='type-id-98'/>
-      <!-- class std::reverse_iterator<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > -->
-      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-114'/>
-      <!-- class std::reverse_iterator<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > -->
-      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-116'/>
+      <typedef-decl name='ostream' type-id='type-id-118' filepath='/usr/include/c++/5.3.1/iosfwd' line='141' column='1' id='type-id-95'/>
+      <!-- typedef unsigned long int std::size_t -->
+      <typedef-decl name='size_t' type-id='type-id-17' filepath='/usr/include/c++/5.3.1/x86_64-redhat-linux/bits/c++config.h' line='1969' column='1' id='type-id-101'/>
       <!-- class std::basic_ostream<char, std::char_traits<char> > -->
-      <class-decl name='basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-120'/>
+      <class-decl name='basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-118'/>
+      <!-- class std::reverse_iterator<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > -->
+      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-112'/>
+      <!-- class std::reverse_iterator<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > -->
+      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-114'/>
       <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(const char*, const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&) -->
       <function-decl name='operator+&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;' mangled-name='_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='1151' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_'>
         <!-- parameter of type 'const char*' -->
-        <parameter type-id='type-id-33' name='__lhs' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='1151' column='1'/>
+        <parameter type-id='type-id-29' name='__lhs' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='1151' column='1'/>
         <!-- parameter of type 'const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&' -->
-        <parameter type-id='type-id-63' name='__rhs' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='1152' column='1'/>
+        <parameter type-id='type-id-61' name='__rhs' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='1152' column='1'/>
         <!-- class std::basic_string<char, std::char_traits<char>, std::allocator<char> > -->
-        <return type-id='type-id-60'/>
+        <return type-id='type-id-59'/>
       </function-decl>
     </namespace-decl>
+    <!-- std::string foo(const std::string&) -->
+    <function-decl name='foo' mangled-name='_Z3fooRKSs' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='14' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3fooRKSs'>
+      <!-- parameter of type 'const std::string&' -->
+      <parameter type-id='type-id-77' name='s' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='14' column='1'/>
+      <!-- typedef std::string -->
+      <return type-id='type-id-75'/>
+    </function-decl>
+    <!-- std::ostream* bar(const std::string&) -->
+    <function-decl name='bar' mangled-name='_Z3barRKSs' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='21' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3barRKSs'>
+      <!-- parameter of type 'const std::string&' -->
+      <parameter type-id='type-id-77' name='str' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='21' column='1'/>
+      <!-- std::ostream* -->
+      <return type-id='type-id-96'/>
+    </function-decl>
     <!-- namespace __gnu_cxx -->
     <namespace-decl name='__gnu_cxx'>
       <!-- class __gnu_cxx::new_allocator<char> -->
-      <class-decl name='new_allocator&lt;char&gt;' size-in-bits='8' visibility='default' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='58' column='1' id='type-id-41'>
+      <class-decl name='new_allocator&lt;char&gt;' size-in-bits='8' visibility='default' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='58' column='1' id='type-id-40'>
         <member-type access='public'>
           <!-- typedef std::size_t __gnu_cxx::new_allocator<char>::size_type -->
-          <typedef-decl name='size_type' type-id='type-id-118' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='61' column='1' id='type-id-121'/>
+          <typedef-decl name='size_type' type-id='type-id-101' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='61' column='1' id='type-id-119'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef char* __gnu_cxx::new_allocator<char>::pointer -->
-          <typedef-decl name='pointer' type-id='type-id-35' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='63' column='1' id='type-id-122'/>
+          <typedef-decl name='pointer' type-id='type-id-25' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='63' column='1' id='type-id-120'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef const char* __gnu_cxx::new_allocator<char>::const_pointer -->
-          <typedef-decl name='const_pointer' type-id='type-id-33' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='64' column='1' id='type-id-123'/>
+          <typedef-decl name='const_pointer' type-id='type-id-29' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='64' column='1' id='type-id-121'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef char& __gnu_cxx::new_allocator<char>::reference -->
-          <typedef-decl name='reference' type-id='type-id-43' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='65' column='1' id='type-id-124'/>
+          <typedef-decl name='reference' type-id='type-id-42' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='65' column='1' id='type-id-122'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef const char& __gnu_cxx::new_allocator<char>::const_reference -->
-          <typedef-decl name='const_reference' type-id='type-id-50' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='66' column='1' id='type-id-125'/>
+          <typedef-decl name='const_reference' type-id='type-id-49' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='66' column='1' id='type-id-123'/>
         </member-type>
       </class-decl>
+      <!-- struct __gnu_cxx::__numeric_traits_integer<char> -->
+      <class-decl name='__numeric_traits_integer&lt;char&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-124'>
+        <data-member access='public' static='yes'>
+          <!-- static const char __gnu_cxx::__numeric_traits_integer<char>::__min -->
+          <var-decl name='__min' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const char __gnu_cxx::__numeric_traits_integer<char>::__max -->
+          <var-decl name='__max' type-id='type-id-48' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIcE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const bool __gnu_cxx::__numeric_traits_integer<char>::__is_signed -->
+          <var-decl name='__is_signed' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const int __gnu_cxx::__numeric_traits_integer<char>::__digits -->
+          <var-decl name='__digits' type-id='type-id-51' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
       <!-- struct __gnu_cxx::__numeric_traits_integer<int> -->
-      <class-decl name='__numeric_traits_integer&lt;int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-126'>
+      <class-decl name='__numeric_traits_integer&lt;int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-125'>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<int>::__min -->
-          <var-decl name='__min' type-id='type-id-52' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+          <var-decl name='__min' type-id='type-id-51' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<int>::__max -->
-          <var-decl name='__max' type-id='type-id-52' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-51' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const bool __gnu_cxx::__numeric_traits_integer<int>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
+          <var-decl name='__is_signed' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<int>::__digits -->
-          <var-decl name='__digits' type-id='type-id-52' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
+          <var-decl name='__digits' type-id='type-id-51' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+      <!-- struct __gnu_cxx::__numeric_traits_integer<long int> -->
+      <class-decl name='__numeric_traits_integer&lt;long int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-126'>
+        <data-member access='public' static='yes'>
+          <!-- static const long int __gnu_cxx::__numeric_traits_integer<long int>::__min -->
+          <var-decl name='__min' type-id='type-id-52' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const long int __gnu_cxx::__numeric_traits_integer<long int>::__max -->
+          <var-decl name='__max' type-id='type-id-52' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const bool __gnu_cxx::__numeric_traits_integer<long int>::__is_signed -->
+          <var-decl name='__is_signed' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const int __gnu_cxx::__numeric_traits_integer<long int>::__digits -->
+          <var-decl name='__digits' type-id='type-id-51' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
         </data-member>
       </class-decl>
       <!-- struct __gnu_cxx::__numeric_traits_integer<long unsigned int> -->
       <class-decl name='__numeric_traits_integer&lt;long unsigned int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-127'>
         <data-member access='public' static='yes'>
           <!-- static const unsigned long int __gnu_cxx::__numeric_traits_integer<long unsigned int>::__min -->
-          <var-decl name='__min' type-id='type-id-83' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+          <var-decl name='__min' type-id='type-id-80' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const unsigned long int __gnu_cxx::__numeric_traits_integer<long unsigned int>::__max -->
-          <var-decl name='__max' type-id='type-id-83' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-80' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const bool __gnu_cxx::__numeric_traits_integer<long unsigned int>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
+          <var-decl name='__is_signed' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<long unsigned int>::__digits -->
-          <var-decl name='__digits' type-id='type-id-52' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerImE8__digitsE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
-        </data-member>
-      </class-decl>
-      <!-- struct __gnu_cxx::__numeric_traits_integer<char> -->
-      <class-decl name='__numeric_traits_integer&lt;char&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-128'>
-        <data-member access='public' static='yes'>
-          <!-- static const char __gnu_cxx::__numeric_traits_integer<char>::__min -->
-          <var-decl name='__min' type-id='type-id-49' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const char __gnu_cxx::__numeric_traits_integer<char>::__max -->
-          <var-decl name='__max' type-id='type-id-49' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIcE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const bool __gnu_cxx::__numeric_traits_integer<char>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const int __gnu_cxx::__numeric_traits_integer<char>::__digits -->
-          <var-decl name='__digits' type-id='type-id-52' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
+          <var-decl name='__digits' type-id='type-id-51' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerImE8__digitsE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
         </data-member>
       </class-decl>
       <!-- struct __gnu_cxx::__numeric_traits_integer<short int> -->
-      <class-decl name='__numeric_traits_integer&lt;short int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-129'>
+      <class-decl name='__numeric_traits_integer&lt;short int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-128'>
         <data-member access='public' static='yes'>
           <!-- static const short int __gnu_cxx::__numeric_traits_integer<short int>::__min -->
-          <var-decl name='__min' type-id='type-id-56' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+          <var-decl name='__min' type-id='type-id-55' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const short int __gnu_cxx::__numeric_traits_integer<short int>::__max -->
-          <var-decl name='__max' type-id='type-id-56' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-55' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const bool __gnu_cxx::__numeric_traits_integer<short int>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
+          <var-decl name='__is_signed' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<short int>::__digits -->
-          <var-decl name='__digits' type-id='type-id-52' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
+          <var-decl name='__digits' type-id='type-id-51' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
         </data-member>
       </class-decl>
-      <!-- struct __gnu_cxx::__numeric_traits_integer<long int> -->
-      <class-decl name='__numeric_traits_integer&lt;long int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-130'>
-        <data-member access='public' static='yes'>
-          <!-- static const long int __gnu_cxx::__numeric_traits_integer<long int>::__min -->
-          <var-decl name='__min' type-id='type-id-53' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const long int __gnu_cxx::__numeric_traits_integer<long int>::__max -->
-          <var-decl name='__max' type-id='type-id-53' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const bool __gnu_cxx::__numeric_traits_integer<long int>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const int __gnu_cxx::__numeric_traits_integer<long int>::__digits -->
-          <var-decl name='__digits' type-id='type-id-52' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
-        </data-member>
-      </class-decl>
-      <!-- class __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > -->
-      <class-decl name='__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-110'/>
       <!-- class __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > -->
-      <class-decl name='__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-112'/>
+      <class-decl name='__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-110'/>
+      <!-- class __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > -->
+      <class-decl name='__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-108'/>
     </namespace-decl>
-    <!-- wint_t btowc(int) -->
-    <function-decl name='btowc' filepath='/usr/include/wchar.h' line='353' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- char* setlocale(int, const char*) -->
+    <function-decl name='setlocale' filepath='/usr/include/locale.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-11'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-29'/>
+      <!-- char* -->
+      <return type-id='type-id-25'/>
     </function-decl>
-    <!-- wint_t fgetwc(__FILE*) -->
-    <function-decl name='fgetwc' filepath='/usr/include/wchar.h' line='745' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
+    <!-- lconv* localeconv() -->
+    <function-decl name='localeconv' filepath='/usr/include/locale.h' line='127' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- lconv* -->
+      <return type-id='type-id-84'/>
     </function-decl>
-    <!-- wchar_t* fgetws(wchar_t*, int, __FILE*) -->
-    <function-decl name='fgetws' filepath='/usr/include/wchar.h' line='774' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- wchar_t* wcscpy(wchar_t*, const wchar_t*) -->
+    <function-decl name='wcscpy' filepath='/usr/include/wchar.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-11'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
       <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
+      <return type-id='type-id-99'/>
     </function-decl>
-    <!-- wint_t fputwc(wchar_t, __FILE*) -->
-    <function-decl name='fputwc' filepath='/usr/include/wchar.h' line='759' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-22'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- int fputws(const wchar_t*, __FILE*) -->
-    <function-decl name='fputws' filepath='/usr/include/wchar.h' line='781' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int fwide(__FILE*, int) -->
-    <function-decl name='fwide' filepath='/usr/include/wchar.h' line='587' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-11'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int fwprintf(__FILE*, const wchar_t*, ...) -->
-    <function-decl name='fwprintf' filepath='/usr/include/wchar.h' line='594' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int fwscanf(__FILE*, const wchar_t*, ...) -->
-    <function-decl name='fwscanf' filepath='/usr/include/wchar.h' line='635' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- wint_t getwc(__FILE*) -->
-    <function-decl name='getwc' filepath='/usr/include/wchar.h' line='746' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- wint_t getwchar() -->
-    <function-decl name='getwchar' filepath='/usr/include/wchar.h' line='752' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- size_t mbrlen(const char*, size_t, mbstate_t*) -->
-    <function-decl name='mbrlen' filepath='/usr/include/wchar.h' line='376' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-33'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-88'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*) -->
-    <function-decl name='mbrtowc' filepath='/usr/include/wchar.h' line='365' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wcsncpy' filepath='/usr/include/wchar.h' line='150' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-33'/>
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-88'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- int mbsinit(const mbstate_t*) -->
-    <function-decl name='mbsinit' filepath='/usr/include/wchar.h' line='361' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const mbstate_t*' -->
-      <parameter type-id='type-id-55'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*) -->
-    <function-decl name='mbsrtowcs' filepath='/usr/include/wchar.h' line='408' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const char**' -->
-      <parameter type-id='type-id-51'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-88'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- wint_t putwc(wchar_t, __FILE*) -->
-    <function-decl name='putwc' filepath='/usr/include/wchar.h' line='760' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-22'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- wint_t putwchar(wchar_t) -->
-    <function-decl name='putwchar' filepath='/usr/include/wchar.h' line='766' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-22'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- int swprintf(wchar_t*, size_t, const wchar_t*, ...) -->
-    <function-decl name='swprintf' filepath='/usr/include/wchar.h' line='604' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int swscanf(const wchar_t*, const wchar_t*, ...) -->
-    <function-decl name='swscanf' filepath='/usr/include/wchar.h' line='645' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- wint_t ungetwc(wint_t, __FILE*) -->
-    <function-decl name='ungetwc' filepath='/usr/include/wchar.h' line='789' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'typedef wint_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- int vfwprintf(__FILE*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vfwprintf' filepath='/usr/include/wchar.h' line='612' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-100'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int vfwscanf(__FILE*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vfwscanf' filepath='/usr/include/wchar.h' line='689' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-100'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int vswprintf(wchar_t*, size_t, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vswprintf' filepath='/usr/include/wchar.h' line='625' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-100'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int vswscanf(const wchar_t*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vswscanf' filepath='/usr/include/wchar.h' line='701' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-100'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int vwprintf(const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vwprintf' filepath='/usr/include/wchar.h' line='620' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-100'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int vwscanf(const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vwscanf' filepath='/usr/include/wchar.h' line='697' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-100'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- size_t wcrtomb(char*, wchar_t, mbstate_t*) -->
-    <function-decl name='wcrtomb' filepath='/usr/include/wchar.h' line='370' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'char*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-22'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-88'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
+      <parameter type-id='type-id-37'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
     </function-decl>
     <!-- wchar_t* wcscat(wchar_t*, const wchar_t*) -->
     <function-decl name='wcscat' filepath='/usr/include/wchar.h' line='155' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
+      <parameter type-id='type-id-99'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
+      <return type-id='type-id-99'/>
+    </function-decl>
+    <!-- wchar_t* wcsncat(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wcsncat' filepath='/usr/include/wchar.h' line='158' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
     </function-decl>
     <!-- int wcscmp(const wchar_t*, const wchar_t*) -->
     <function-decl name='wcscmp' filepath='/usr/include/wchar.h' line='163' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int wcsncmp(const wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wcsncmp' filepath='/usr/include/wchar.h' line='166' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
       <!-- int -->
       <return type-id='type-id-11'/>
     </function-decl>
     <!-- int wcscoll(const wchar_t*, const wchar_t*) -->
     <function-decl name='wcscoll' filepath='/usr/include/wchar.h' line='192' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- int -->
       <return type-id='type-id-11'/>
     </function-decl>
-    <!-- wchar_t* wcscpy(wchar_t*, const wchar_t*) -->
-    <function-decl name='wcscpy' filepath='/usr/include/wchar.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- size_t wcsxfrm(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wcsxfrm' filepath='/usr/include/wchar.h' line='196' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
+      <parameter type-id='type-id-99'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
     </function-decl>
     <!-- size_t wcscspn(const wchar_t*, const wchar_t*) -->
     <function-decl name='wcscspn' filepath='/usr/include/wchar.h' line='252' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- size_t wcsftime(wchar_t*, size_t, const wchar_t*, const tm*) -->
-    <function-decl name='wcsftime' filepath='/usr/include/wchar.h' line='855' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'const tm*' -->
       <parameter type-id='type-id-82'/>
       <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- size_t wcslen(const wchar_t*) -->
-    <function-decl name='wcslen' filepath='/usr/include/wchar.h' line='287' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- wchar_t* wcsncat(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wcsncat' filepath='/usr/include/wchar.h' line='158' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
-    </function-decl>
-    <!-- int wcsncmp(const wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wcsncmp' filepath='/usr/include/wchar.h' line='166' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wcsncpy' filepath='/usr/include/wchar.h' line='150' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
-    </function-decl>
-    <!-- size_t wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*) -->
-    <function-decl name='wcsrtombs' filepath='/usr/include/wchar.h' line='414' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'char*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- parameter of type 'const wchar_t**' -->
-      <parameter type-id='type-id-86'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-88'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
+      <return type-id='type-id-37'/>
     </function-decl>
     <!-- size_t wcsspn(const wchar_t*, const wchar_t*) -->
     <function-decl name='wcsspn' filepath='/usr/include/wchar.h' line='256' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**) -->
+    <function-decl name='wcstok' filepath='/usr/include/wchar.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'wchar_t**' -->
+      <parameter type-id='type-id-100'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
+    </function-decl>
+    <!-- size_t wcslen(const wchar_t*) -->
+    <function-decl name='wcslen' filepath='/usr/include/wchar.h' line='287' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- int wmemcmp(const wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wmemcmp' filepath='/usr/include/wchar.h' line='325' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wmemcpy' filepath='/usr/include/wchar.h' line='329' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
+    </function-decl>
+    <!-- wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wmemmove' filepath='/usr/include/wchar.h' line='334' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
+    </function-decl>
+    <!-- wchar_t* wmemset(wchar_t*, wchar_t, size_t) -->
+    <function-decl name='wmemset' filepath='/usr/include/wchar.h' line='338' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-21'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
+    </function-decl>
+    <!-- wint_t btowc(int) -->
+    <function-decl name='btowc' filepath='/usr/include/wchar.h' line='353' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-11'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- int wctob(wint_t) -->
+    <function-decl name='wctob' filepath='/usr/include/wchar.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'typedef wint_t' -->
+      <parameter type-id='type-id-38'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int mbsinit(const mbstate_t*) -->
+    <function-decl name='mbsinit' filepath='/usr/include/wchar.h' line='361' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const mbstate_t*' -->
+      <parameter type-id='type-id-54'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*) -->
+    <function-decl name='mbrtowc' filepath='/usr/include/wchar.h' line='365' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-29'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'mbstate_t*' -->
       <parameter type-id='type-id-85'/>
       <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- size_t wcrtomb(char*, wchar_t, mbstate_t*) -->
+    <function-decl name='wcrtomb' filepath='/usr/include/wchar.h' line='370' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'char*' -->
+      <parameter type-id='type-id-25'/>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-21'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-85'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- size_t mbrlen(const char*, size_t, mbstate_t*) -->
+    <function-decl name='mbrlen' filepath='/usr/include/wchar.h' line='376' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-29'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-85'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*) -->
+    <function-decl name='mbsrtowcs' filepath='/usr/include/wchar.h' line='408' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const char**' -->
+      <parameter type-id='type-id-50'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-85'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- size_t wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*) -->
+    <function-decl name='wcsrtombs' filepath='/usr/include/wchar.h' line='414' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'char*' -->
+      <parameter type-id='type-id-25'/>
+      <!-- parameter of type 'const wchar_t**' -->
+      <parameter type-id='type-id-83'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-85'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
     </function-decl>
     <!-- double wcstod(const wchar_t*, wchar_t**) -->
     <function-decl name='wcstod' filepath='/usr/include/wchar.h' line='450' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
+      <parameter type-id='type-id-100'/>
       <!-- double -->
       <return type-id='type-id-9'/>
     </function-decl>
     <!-- float wcstof(const wchar_t*, wchar_t**) -->
     <function-decl name='wcstof' filepath='/usr/include/wchar.h' line='457' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
+      <parameter type-id='type-id-100'/>
       <!-- float -->
       <return type-id='type-id-10'/>
     </function-decl>
-    <!-- wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**) -->
-    <function-decl name='wcstok' filepath='/usr/include/wchar.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
+    <!-- long double wcstold(const wchar_t*, wchar_t**) -->
+    <function-decl name='wcstold' filepath='/usr/include/wchar.h' line='459' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
+      <parameter type-id='type-id-100'/>
+      <!-- long double -->
+      <return type-id='type-id-12'/>
     </function-decl>
     <!-- long int wcstol(const wchar_t*, wchar_t**, int) -->
     <function-decl name='wcstol' filepath='/usr/include/wchar.h' line='468' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
+      <parameter type-id='type-id-100'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-11'/>
       <!-- long int -->
@@ -1070,107 +964,20 @@
     <!-- unsigned long int wcstoul(const wchar_t*, wchar_t**, int) -->
     <function-decl name='wcstoul' filepath='/usr/include/wchar.h' line='473' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
+      <parameter type-id='type-id-100'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-11'/>
       <!-- unsigned long int -->
       <return type-id='type-id-17'/>
     </function-decl>
-    <!-- size_t wcsxfrm(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wcsxfrm' filepath='/usr/include/wchar.h' line='196' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- int wctob(wint_t) -->
-    <function-decl name='wctob' filepath='/usr/include/wchar.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'typedef wint_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int wmemcmp(const wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wmemcmp' filepath='/usr/include/wchar.h' line='325' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wmemcpy' filepath='/usr/include/wchar.h' line='329' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
-    </function-decl>
-    <!-- wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wmemmove' filepath='/usr/include/wchar.h' line='334' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
-    </function-decl>
-    <!-- wchar_t* wmemset(wchar_t*, wchar_t, size_t) -->
-    <function-decl name='wmemset' filepath='/usr/include/wchar.h' line='338' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-22'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
-    </function-decl>
-    <!-- int wprintf(const wchar_t*, ...) -->
-    <function-decl name='wprintf' filepath='/usr/include/wchar.h' line='601' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int wscanf(const wchar_t*, ...) -->
-    <function-decl name='wscanf' filepath='/usr/include/wchar.h' line='642' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- long double wcstold(const wchar_t*, wchar_t**) -->
-    <function-decl name='wcstold' filepath='/usr/include/wchar.h' line='459' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
-      <!-- long double -->
-      <return type-id='type-id-12'/>
-    </function-decl>
     <!-- long long int wcstoll(const wchar_t*, wchar_t**, int) -->
     <function-decl name='wcstoll' filepath='/usr/include/wchar.h' line='483' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
+      <parameter type-id='type-id-100'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-11'/>
       <!-- long long int -->
@@ -1179,75 +986,264 @@
     <!-- long long unsigned int wcstoull(const wchar_t*, wchar_t**, int) -->
     <function-decl name='wcstoull' filepath='/usr/include/wchar.h' line='490' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
+      <parameter type-id='type-id-100'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-11'/>
       <!-- long long unsigned int -->
       <return type-id='type-id-15'/>
     </function-decl>
-    <!-- char* setlocale(int, const char*) -->
-    <function-decl name='setlocale' filepath='/usr/include/locale.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- int fwide(__FILE*, int) -->
+    <function-decl name='fwide' filepath='/usr/include/wchar.h' line='587' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-11'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-33'/>
-      <!-- char* -->
-      <return type-id='type-id-35'/>
-    </function-decl>
-    <!-- lconv* localeconv() -->
-    <function-decl name='localeconv' filepath='/usr/include/locale.h' line='127' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- lconv* -->
-      <return type-id='type-id-87'/>
-    </function-decl>
-    <!-- int iswctype(wint_t, wctype_t) -->
-    <function-decl name='iswctype' filepath='/usr/include/wctype.h' line='175' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'typedef wint_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type 'typedef wctype_t' -->
-      <parameter type-id='type-id-36'/>
       <!-- int -->
       <return type-id='type-id-11'/>
     </function-decl>
-    <!-- wint_t towctrans(wint_t, wctrans_t) -->
-    <function-decl name='towctrans' filepath='/usr/include/wctype.h' line='221' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'typedef wint_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type 'typedef wctrans_t' -->
-      <parameter type-id='type-id-38'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
+    <!-- int fwprintf(__FILE*, const wchar_t*, ...) -->
+    <function-decl name='fwprintf' filepath='/usr/include/wchar.h' line='594' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
     </function-decl>
-    <!-- wctrans_t wctrans(const char*) -->
-    <function-decl name='wctrans' filepath='/usr/include/wctype.h' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-33'/>
-      <!-- typedef wctrans_t -->
+    <!-- int wprintf(const wchar_t*, ...) -->
+    <function-decl name='wprintf' filepath='/usr/include/wchar.h' line='601' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int swprintf(wchar_t*, size_t, const wchar_t*, ...) -->
+    <function-decl name='swprintf' filepath='/usr/include/wchar.h' line='604' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int vfwprintf(__FILE*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vfwprintf' filepath='/usr/include/wchar.h' line='612' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-97'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int vwprintf(const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vwprintf' filepath='/usr/include/wchar.h' line='620' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-97'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int vswprintf(wchar_t*, size_t, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vswprintf' filepath='/usr/include/wchar.h' line='625' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-97'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int fwscanf(__FILE*, const wchar_t*, ...) -->
+    <function-decl name='fwscanf' filepath='/usr/include/wchar.h' line='635' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int wscanf(const wchar_t*, ...) -->
+    <function-decl name='wscanf' filepath='/usr/include/wchar.h' line='642' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int swscanf(const wchar_t*, const wchar_t*, ...) -->
+    <function-decl name='swscanf' filepath='/usr/include/wchar.h' line='645' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int vfwscanf(__FILE*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vfwscanf' filepath='/usr/include/wchar.h' line='689' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-97'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int vwscanf(const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vwscanf' filepath='/usr/include/wchar.h' line='697' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-97'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int vswscanf(const wchar_t*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vswscanf' filepath='/usr/include/wchar.h' line='701' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-97'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- wint_t fgetwc(__FILE*) -->
+    <function-decl name='fgetwc' filepath='/usr/include/wchar.h' line='745' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- typedef wint_t -->
       <return type-id='type-id-38'/>
     </function-decl>
+    <!-- wint_t getwc(__FILE*) -->
+    <function-decl name='getwc' filepath='/usr/include/wchar.h' line='746' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- wint_t getwchar() -->
+    <function-decl name='getwchar' filepath='/usr/include/wchar.h' line='752' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- wint_t fputwc(wchar_t, __FILE*) -->
+    <function-decl name='fputwc' filepath='/usr/include/wchar.h' line='759' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-21'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- wint_t putwc(wchar_t, __FILE*) -->
+    <function-decl name='putwc' filepath='/usr/include/wchar.h' line='760' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-21'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- wint_t putwchar(wchar_t) -->
+    <function-decl name='putwchar' filepath='/usr/include/wchar.h' line='766' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-21'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- wchar_t* fgetws(wchar_t*, int, __FILE*) -->
+    <function-decl name='fgetws' filepath='/usr/include/wchar.h' line='774' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-11'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
+    </function-decl>
+    <!-- int fputws(const wchar_t*, __FILE*) -->
+    <function-decl name='fputws' filepath='/usr/include/wchar.h' line='781' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- wint_t ungetwc(wint_t, __FILE*) -->
+    <function-decl name='ungetwc' filepath='/usr/include/wchar.h' line='789' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'typedef wint_t' -->
+      <parameter type-id='type-id-38'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- size_t wcsftime(wchar_t*, size_t, const wchar_t*, const tm*) -->
+    <function-decl name='wcsftime' filepath='/usr/include/wchar.h' line='855' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'const tm*' -->
+      <parameter type-id='type-id-79'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
+    </function-decl>
     <!-- wctype_t wctype(const char*) -->
     <function-decl name='wctype' filepath='/usr/include/wctype.h' line='171' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-33'/>
+      <parameter type-id='type-id-29'/>
       <!-- typedef wctype_t -->
+      <return type-id='type-id-34'/>
+    </function-decl>
+    <!-- int iswctype(wint_t, wctype_t) -->
+    <function-decl name='iswctype' filepath='/usr/include/wctype.h' line='175' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'typedef wint_t' -->
+      <parameter type-id='type-id-38'/>
+      <!-- parameter of type 'typedef wctype_t' -->
+      <parameter type-id='type-id-34'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- wctrans_t wctrans(const char*) -->
+    <function-decl name='wctrans' filepath='/usr/include/wctype.h' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-29'/>
+      <!-- typedef wctrans_t -->
       <return type-id='type-id-36'/>
     </function-decl>
-    <!-- std::string foo(const std::string&) -->
-    <function-decl name='foo' mangled-name='_Z3fooRKSs' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='14' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3fooRKSs'>
-      <!-- parameter of type 'const std::string&' -->
-      <parameter type-id='type-id-80' name='s' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='14' column='1'/>
-      <!-- typedef std::string -->
-      <return type-id='type-id-77'/>
+    <!-- wint_t towctrans(wint_t, wctrans_t) -->
+    <function-decl name='towctrans' filepath='/usr/include/wctype.h' line='221' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'typedef wint_t' -->
+      <parameter type-id='type-id-38'/>
+      <!-- parameter of type 'typedef wctrans_t' -->
+      <parameter type-id='type-id-36'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
     </function-decl>
-    <!-- std::ostream* bar(const std::string&) -->
-    <function-decl name='bar' mangled-name='_Z3barRKSs' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='21' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3barRKSs'>
-      <!-- parameter of type 'const std::string&' -->
-      <parameter type-id='type-id-80' name='str' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='21' column='1'/>
-      <!-- std::ostream* -->
-      <return type-id='type-id-99'/>
-    </function-decl>
-    <!-- struct _IO_FILE -->
-    <class-decl name='_IO_FILE' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-25'/>
+    <!-- void -->
+    <type-decl name='void' id='type-id-98'/>
   </abi-instr>
 </abi-corpus>
diff --git a/tests/data/test-annotate/libtest24-drop-fns.so.abi b/tests/data/test-annotate/libtest24-drop-fns.so.abi
index 36cb46a..0cdc04a 100644
--- a/tests/data/test-annotate/libtest24-drop-fns.so.abi
+++ b/tests/data/test-annotate/libtest24-drop-fns.so.abi
@@ -1,4 +1,4 @@
-<abi-corpus version='2.0' architecture='elf-amd-x86_64'>
+<abi-corpus version='2.1' architecture='elf-amd-x86_64'>
   <elf-needed>
     <dependency name='libgcc_s.so.1'/>
     <dependency name='libc.so.6'/>
@@ -75,134 +75,53 @@
     </array-type-def>
     <!-- variadic parameter type -->
     <type-decl name='variadic parameter type' id='type-id-20'/>
-    <!-- void -->
-    <type-decl name='void' id='type-id-21'/>
     <!-- wchar_t -->
-    <type-decl name='wchar_t' size-in-bits='32' id='type-id-22'/>
+    <type-decl name='wchar_t' size-in-bits='32' id='type-id-21'/>
+    <!-- typedef int __int32_t -->
+    <typedef-decl name='__int32_t' type-id='type-id-11' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-22'/>
     <!-- typedef int _Atomic_word -->
     <typedef-decl name='_Atomic_word' type-id='type-id-11' filepath='/usr/include/c++/5.3.1/x86_64-redhat-linux/bits/atomic_word.h' line='32' column='1' id='type-id-23'/>
-    <!-- typedef unsigned int wint_t -->
-    <typedef-decl name='wint_t' type-id='type-id-7' filepath='/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h' line='357' column='1' id='type-id-24'/>
-    <!-- typedef _IO_FILE __FILE -->
-    <typedef-decl name='__FILE' type-id='type-id-25' filepath='/usr/include/stdio.h' line='64' column='1' id='type-id-26'/>
-    <!-- typedef unsigned long int size_t -->
-    <typedef-decl name='size_t' type-id='type-id-17' filepath='/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h' line='216' column='1' id='type-id-27'/>
-    <!-- typedef __mbstate_t mbstate_t -->
-    <typedef-decl name='mbstate_t' type-id='type-id-28' filepath='/usr/include/wchar.h' line='106' column='1' id='type-id-29'/>
-    <!-- typedef __anonymous_struct__ __mbstate_t -->
-    <typedef-decl name='__mbstate_t' type-id='type-id-30' filepath='/usr/include/wchar.h' line='94' column='1' id='type-id-28'/>
-    <!-- struct {int __count; union {unsigned int __wch; char __wchb[4];} __value;} -->
-    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-28' visibility='default' filepath='/usr/include/wchar.h' line='83' column='1' id='type-id-30'>
-      <member-type access='public'>
-        <!-- union {unsigned int __wch; char __wchb[4];} -->
-        <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='86' column='1' id='type-id-31'>
-          <data-member access='public'>
-            <!-- unsigned int __wch -->
-            <var-decl name='__wch' type-id='type-id-7' visibility='default' filepath='/usr/include/wchar.h' line='88' column='1'/>
-          </data-member>
-          <data-member access='public'>
-            <!-- char __wchb[4] -->
-            <var-decl name='__wchb' type-id='type-id-3' visibility='default' filepath='/usr/include/wchar.h' line='92' column='1'/>
-          </data-member>
-        </union-decl>
-      </member-type>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int __count -->
-        <var-decl name='__count' type-id='type-id-11' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- union {unsigned int __wch; char __wchb[4];} __value -->
-        <var-decl name='__value' type-id='type-id-31' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- struct tm -->
-    <class-decl name='tm' size-in-bits='448' is-struct='yes' visibility='default' filepath='/usr/include/time.h' line='133' column='1' id='type-id-32'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int tm::tm_sec -->
-        <var-decl name='tm_sec' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='135' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- int tm::tm_min -->
-        <var-decl name='tm_min' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='136' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int tm::tm_hour -->
-        <var-decl name='tm_hour' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='137' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='96'>
-        <!-- int tm::tm_mday -->
-        <var-decl name='tm_mday' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='138' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int tm::tm_mon -->
-        <var-decl name='tm_mon' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='139' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int tm::tm_year -->
-        <var-decl name='tm_year' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='140' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- int tm::tm_wday -->
-        <var-decl name='tm_wday' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='141' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='224'>
-        <!-- int tm::tm_yday -->
-        <var-decl name='tm_yday' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='142' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- int tm::tm_isdst -->
-        <var-decl name='tm_isdst' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='143' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- long int tm::tm_gmtoff -->
-        <var-decl name='tm_gmtoff' type-id='type-id-13' visibility='default' filepath='/usr/include/time.h' line='146' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- const char* tm::tm_zone -->
-        <var-decl name='tm_zone' type-id='type-id-33' visibility='default' filepath='/usr/include/time.h' line='147' column='1'/>
-      </data-member>
-    </class-decl>
     <!-- struct lconv -->
-    <class-decl name='lconv' size-in-bits='768' is-struct='yes' visibility='default' filepath='/usr/include/locale.h' line='53' column='1' id='type-id-34'>
+    <class-decl name='lconv' size-in-bits='768' is-struct='yes' visibility='default' filepath='/usr/include/locale.h' line='53' column='1' id='type-id-24'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- char* lconv::decimal_point -->
-        <var-decl name='decimal_point' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='57' column='1'/>
+        <var-decl name='decimal_point' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='57' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- char* lconv::thousands_sep -->
-        <var-decl name='thousands_sep' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='58' column='1'/>
+        <var-decl name='thousands_sep' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='58' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- char* lconv::grouping -->
-        <var-decl name='grouping' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='64' column='1'/>
+        <var-decl name='grouping' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='64' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- char* lconv::int_curr_symbol -->
-        <var-decl name='int_curr_symbol' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='70' column='1'/>
+        <var-decl name='int_curr_symbol' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='70' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- char* lconv::currency_symbol -->
-        <var-decl name='currency_symbol' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='71' column='1'/>
+        <var-decl name='currency_symbol' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='71' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- char* lconv::mon_decimal_point -->
-        <var-decl name='mon_decimal_point' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='72' column='1'/>
+        <var-decl name='mon_decimal_point' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='72' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='384'>
         <!-- char* lconv::mon_thousands_sep -->
-        <var-decl name='mon_thousands_sep' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='73' column='1'/>
+        <var-decl name='mon_thousands_sep' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='73' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='448'>
         <!-- char* lconv::mon_grouping -->
-        <var-decl name='mon_grouping' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='74' column='1'/>
+        <var-decl name='mon_grouping' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='74' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='512'>
         <!-- char* lconv::positive_sign -->
-        <var-decl name='positive_sign' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='75' column='1'/>
+        <var-decl name='positive_sign' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='75' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='576'>
         <!-- char* lconv::negative_sign -->
-        <var-decl name='negative_sign' type-id='type-id-35' visibility='default' filepath='/usr/include/locale.h' line='76' column='1'/>
+        <var-decl name='negative_sign' type-id='type-id-25' visibility='default' filepath='/usr/include/locale.h' line='76' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='640'>
         <!-- char lconv::int_frac_digits -->
@@ -261,183 +180,266 @@
         <var-decl name='int_n_sign_posn' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='111' column='1'/>
       </data-member>
     </class-decl>
+    <!-- typedef _IO_FILE __FILE -->
+    <typedef-decl name='__FILE' type-id='type-id-26' filepath='/usr/include/stdio.h' line='64' column='1' id='type-id-27'/>
+    <!-- struct tm -->
+    <class-decl name='tm' size-in-bits='448' is-struct='yes' visibility='default' filepath='/usr/include/time.h' line='133' column='1' id='type-id-28'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- int tm::tm_sec -->
+        <var-decl name='tm_sec' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='135' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <!-- int tm::tm_min -->
+        <var-decl name='tm_min' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='136' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- int tm::tm_hour -->
+        <var-decl name='tm_hour' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='137' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <!-- int tm::tm_mday -->
+        <var-decl name='tm_mday' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='138' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- int tm::tm_mon -->
+        <var-decl name='tm_mon' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='139' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <!-- int tm::tm_year -->
+        <var-decl name='tm_year' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='140' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- int tm::tm_wday -->
+        <var-decl name='tm_wday' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='141' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='224'>
+        <!-- int tm::tm_yday -->
+        <var-decl name='tm_yday' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='142' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- int tm::tm_isdst -->
+        <var-decl name='tm_isdst' type-id='type-id-11' visibility='default' filepath='/usr/include/time.h' line='143' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- long int tm::tm_gmtoff -->
+        <var-decl name='tm_gmtoff' type-id='type-id-13' visibility='default' filepath='/usr/include/time.h' line='146' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- const char* tm::tm_zone -->
+        <var-decl name='tm_zone' type-id='type-id-29' visibility='default' filepath='/usr/include/time.h' line='147' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- struct __mbstate_t -->
+    <class-decl name='__mbstate_t' size-in-bits='64' is-struct='yes' naming-typedef-id='type-id-30' visibility='default' filepath='/usr/include/wchar.h' line='83' column='1' id='type-id-31'>
+      <member-type access='public'>
+        <!-- union {unsigned int __wch; char __wchb[4];} -->
+        <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='86' column='1' id='type-id-32'>
+          <data-member access='public'>
+            <!-- unsigned int __wch -->
+            <var-decl name='__wch' type-id='type-id-7' visibility='default' filepath='/usr/include/wchar.h' line='88' column='1'/>
+          </data-member>
+          <data-member access='public'>
+            <!-- char __wchb[4] -->
+            <var-decl name='__wchb' type-id='type-id-3' visibility='default' filepath='/usr/include/wchar.h' line='92' column='1'/>
+          </data-member>
+        </union-decl>
+      </member-type>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- int __mbstate_t::__count -->
+        <var-decl name='__count' type-id='type-id-11' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <!-- union {unsigned int __wch; char __wchb[4];} __mbstate_t::__value -->
+        <var-decl name='__value' type-id='type-id-32' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef __mbstate_t __mbstate_t -->
+    <typedef-decl name='__mbstate_t' type-id='type-id-31' filepath='/usr/include/wchar.h' line='94' column='1' id='type-id-30'/>
+    <!-- typedef __mbstate_t mbstate_t -->
+    <typedef-decl name='mbstate_t' type-id='type-id-30' filepath='/usr/include/wchar.h' line='106' column='1' id='type-id-33'/>
     <!-- typedef unsigned long int wctype_t -->
-    <typedef-decl name='wctype_t' type-id='type-id-17' filepath='/usr/include/wctype.h' line='52' column='1' id='type-id-36'/>
+    <typedef-decl name='wctype_t' type-id='type-id-17' filepath='/usr/include/wctype.h' line='52' column='1' id='type-id-34'/>
     <!-- typedef const __int32_t* wctrans_t -->
-    <typedef-decl name='wctrans_t' type-id='type-id-37' filepath='/usr/include/wctype.h' line='186' column='1' id='type-id-38'/>
-    <!-- typedef int __int32_t -->
-    <typedef-decl name='__int32_t' type-id='type-id-11' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-39'/>
+    <typedef-decl name='wctrans_t' type-id='type-id-35' filepath='/usr/include/wctype.h' line='186' column='1' id='type-id-36'/>
+    <!-- typedef unsigned long int size_t -->
+    <typedef-decl name='size_t' type-id='type-id-17' filepath='/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h' line='216' column='1' id='type-id-37'/>
+    <!-- typedef unsigned int wint_t -->
+    <typedef-decl name='wint_t' type-id='type-id-7' filepath='/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h' line='357' column='1' id='type-id-38'/>
     <!-- __FILE* -->
-    <pointer-type-def type-id='type-id-26' size-in-bits='64' id='type-id-40'/>
+    <pointer-type-def type-id='type-id-27' size-in-bits='64' id='type-id-39'/>
     <!-- __gnu_cxx::new_allocator<char>* -->
-    <pointer-type-def type-id='type-id-41' size-in-bits='64' id='type-id-42'/>
+    <pointer-type-def type-id='type-id-40' size-in-bits='64' id='type-id-41'/>
     <!-- char& -->
-    <reference-type-def kind='lvalue' type-id='type-id-2' size-in-bits='64' id='type-id-43'/>
+    <reference-type-def kind='lvalue' type-id='type-id-2' size-in-bits='64' id='type-id-42'/>
     <!-- char* -->
-    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-35'/>
+    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-25'/>
     <!-- const __gnu_cxx::new_allocator<char> -->
-    <qualified-type-def type-id='type-id-41' const='yes' id='type-id-44'/>
+    <qualified-type-def type-id='type-id-40' const='yes' id='type-id-43'/>
     <!-- const __gnu_cxx::new_allocator<char>& -->
-    <reference-type-def kind='lvalue' type-id='type-id-44' size-in-bits='64' id='type-id-45'/>
+    <reference-type-def kind='lvalue' type-id='type-id-43' size-in-bits='64' id='type-id-44'/>
     <!-- const __gnu_cxx::new_allocator<char>* -->
-    <pointer-type-def type-id='type-id-44' size-in-bits='64' id='type-id-46'/>
+    <pointer-type-def type-id='type-id-43' size-in-bits='64' id='type-id-45'/>
     <!-- const __int32_t -->
-    <qualified-type-def type-id='type-id-39' const='yes' id='type-id-47'/>
+    <qualified-type-def type-id='type-id-22' const='yes' id='type-id-46'/>
     <!-- const __int32_t* -->
-    <pointer-type-def type-id='type-id-47' size-in-bits='64' id='type-id-37'/>
+    <pointer-type-def type-id='type-id-46' size-in-bits='64' id='type-id-35'/>
     <!-- const bool -->
-    <qualified-type-def type-id='type-id-1' const='yes' id='type-id-48'/>
+    <qualified-type-def type-id='type-id-1' const='yes' id='type-id-47'/>
     <!-- const char -->
-    <qualified-type-def type-id='type-id-2' const='yes' id='type-id-49'/>
+    <qualified-type-def type-id='type-id-2' const='yes' id='type-id-48'/>
     <!-- const char& -->
-    <reference-type-def kind='lvalue' type-id='type-id-49' size-in-bits='64' id='type-id-50'/>
+    <reference-type-def kind='lvalue' type-id='type-id-48' size-in-bits='64' id='type-id-49'/>
     <!-- const char* -->
-    <pointer-type-def type-id='type-id-49' size-in-bits='64' id='type-id-33'/>
+    <pointer-type-def type-id='type-id-48' size-in-bits='64' id='type-id-29'/>
     <!-- const char** -->
-    <pointer-type-def type-id='type-id-33' size-in-bits='64' id='type-id-51'/>
+    <pointer-type-def type-id='type-id-29' size-in-bits='64' id='type-id-50'/>
     <!-- const int -->
-    <qualified-type-def type-id='type-id-11' const='yes' id='type-id-52'/>
+    <qualified-type-def type-id='type-id-11' const='yes' id='type-id-51'/>
     <!-- const long int -->
-    <qualified-type-def type-id='type-id-13' const='yes' id='type-id-53'/>
+    <qualified-type-def type-id='type-id-13' const='yes' id='type-id-52'/>
     <!-- const mbstate_t -->
-    <qualified-type-def type-id='type-id-29' const='yes' id='type-id-54'/>
+    <qualified-type-def type-id='type-id-33' const='yes' id='type-id-53'/>
     <!-- const mbstate_t* -->
-    <pointer-type-def type-id='type-id-54' size-in-bits='64' id='type-id-55'/>
+    <pointer-type-def type-id='type-id-53' size-in-bits='64' id='type-id-54'/>
     <!-- const short int -->
-    <qualified-type-def type-id='type-id-16' const='yes' id='type-id-56'/>
+    <qualified-type-def type-id='type-id-16' const='yes' id='type-id-55'/>
     <!-- const std::allocator<char> -->
-    <qualified-type-def type-id='type-id-57' const='yes' id='type-id-58'/>
+    <qualified-type-def type-id='type-id-56' const='yes' id='type-id-57'/>
     <!-- const std::allocator<char>& -->
-    <reference-type-def kind='lvalue' type-id='type-id-58' size-in-bits='64' id='type-id-59'/>
+    <reference-type-def kind='lvalue' type-id='type-id-57' size-in-bits='64' id='type-id-58'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> > -->
-    <qualified-type-def type-id='type-id-60' const='yes' id='type-id-61'/>
+    <qualified-type-def type-id='type-id-59' const='yes' id='type-id-60'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >& -->
-    <qualified-type-def type-id='type-id-62' id='type-id-63'/>
-    <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >& -->
-    <reference-type-def kind='lvalue' type-id='type-id-61' size-in-bits='64' id='type-id-62'/>
+    <reference-type-def kind='lvalue' type-id='type-id-60' size-in-bits='64' id='type-id-61'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >* -->
-    <pointer-type-def type-id='type-id-61' size-in-bits='64' id='type-id-64'/>
+    <pointer-type-def type-id='type-id-60' size-in-bits='64' id='type-id-62'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep -->
-    <qualified-type-def type-id='type-id-65' const='yes' id='type-id-66'/>
+    <qualified-type-def type-id='type-id-63' const='yes' id='type-id-64'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep* -->
-    <pointer-type-def type-id='type-id-66' size-in-bits='64' id='type-id-67'/>
+    <pointer-type-def type-id='type-id-64' size-in-bits='64' id='type-id-65'/>
     <!-- const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type -->
-    <qualified-type-def type-id='type-id-68' const='yes' id='type-id-69'/>
+    <qualified-type-def type-id='type-id-66' const='yes' id='type-id-67'/>
     <!-- const std::char_traits<char>::char_type -->
-    <qualified-type-def type-id='type-id-70' const='yes' id='type-id-71'/>
+    <qualified-type-def type-id='type-id-68' const='yes' id='type-id-69'/>
     <!-- const std::char_traits<char>::char_type& -->
-    <reference-type-def kind='lvalue' type-id='type-id-71' size-in-bits='64' id='type-id-72'/>
+    <reference-type-def kind='lvalue' type-id='type-id-69' size-in-bits='64' id='type-id-70'/>
     <!-- const std::char_traits<char>::char_type* -->
-    <pointer-type-def type-id='type-id-71' size-in-bits='64' id='type-id-73'/>
+    <pointer-type-def type-id='type-id-69' size-in-bits='64' id='type-id-71'/>
     <!-- const std::char_traits<char>::int_type -->
-    <qualified-type-def type-id='type-id-74' const='yes' id='type-id-75'/>
+    <qualified-type-def type-id='type-id-72' const='yes' id='type-id-73'/>
     <!-- const std::char_traits<char>::int_type& -->
-    <reference-type-def kind='lvalue' type-id='type-id-75' size-in-bits='64' id='type-id-76'/>
+    <reference-type-def kind='lvalue' type-id='type-id-73' size-in-bits='64' id='type-id-74'/>
     <!-- const std::string -->
-    <qualified-type-def type-id='type-id-77' const='yes' id='type-id-78'/>
+    <qualified-type-def type-id='type-id-75' const='yes' id='type-id-76'/>
     <!-- const std::string& -->
-    <qualified-type-def type-id='type-id-79' id='type-id-80'/>
-    <!-- const std::string& -->
-    <reference-type-def kind='lvalue' type-id='type-id-78' size-in-bits='64' id='type-id-79'/>
+    <reference-type-def kind='lvalue' type-id='type-id-76' size-in-bits='64' id='type-id-77'/>
     <!-- const tm -->
-    <qualified-type-def type-id='type-id-32' const='yes' id='type-id-81'/>
+    <qualified-type-def type-id='type-id-28' const='yes' id='type-id-78'/>
     <!-- const tm* -->
-    <pointer-type-def type-id='type-id-81' size-in-bits='64' id='type-id-82'/>
+    <pointer-type-def type-id='type-id-78' size-in-bits='64' id='type-id-79'/>
     <!-- const unsigned long int -->
-    <qualified-type-def type-id='type-id-17' const='yes' id='type-id-83'/>
+    <qualified-type-def type-id='type-id-17' const='yes' id='type-id-80'/>
     <!-- const wchar_t -->
-    <qualified-type-def type-id='type-id-22' const='yes' id='type-id-84'/>
+    <qualified-type-def type-id='type-id-21' const='yes' id='type-id-81'/>
     <!-- const wchar_t* -->
-    <pointer-type-def type-id='type-id-84' size-in-bits='64' id='type-id-85'/>
+    <pointer-type-def type-id='type-id-81' size-in-bits='64' id='type-id-82'/>
     <!-- const wchar_t** -->
-    <pointer-type-def type-id='type-id-85' size-in-bits='64' id='type-id-86'/>
+    <pointer-type-def type-id='type-id-82' size-in-bits='64' id='type-id-83'/>
     <!-- lconv* -->
-    <pointer-type-def type-id='type-id-34' size-in-bits='64' id='type-id-87'/>
+    <pointer-type-def type-id='type-id-24' size-in-bits='64' id='type-id-84'/>
     <!-- mbstate_t* -->
-    <pointer-type-def type-id='type-id-29' size-in-bits='64' id='type-id-88'/>
+    <pointer-type-def type-id='type-id-33' size-in-bits='64' id='type-id-85'/>
     <!-- std::allocator<char>* -->
-    <pointer-type-def type-id='type-id-57' size-in-bits='64' id='type-id-89'/>
+    <pointer-type-def type-id='type-id-56' size-in-bits='64' id='type-id-86'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >& -->
-    <reference-type-def kind='lvalue' type-id='type-id-60' size-in-bits='64' id='type-id-90'/>
+    <reference-type-def kind='lvalue' type-id='type-id-59' size-in-bits='64' id='type-id-87'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >* -->
-    <pointer-type-def type-id='type-id-60' size-in-bits='64' id='type-id-91'/>
+    <pointer-type-def type-id='type-id-59' size-in-bits='64' id='type-id-88'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider* -->
-    <pointer-type-def type-id='type-id-92' size-in-bits='64' id='type-id-93'/>
+    <pointer-type-def type-id='type-id-89' size-in-bits='64' id='type-id-90'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep& -->
-    <reference-type-def kind='lvalue' type-id='type-id-65' size-in-bits='64' id='type-id-94'/>
+    <reference-type-def kind='lvalue' type-id='type-id-63' size-in-bits='64' id='type-id-91'/>
     <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep* -->
-    <pointer-type-def type-id='type-id-65' size-in-bits='64' id='type-id-95'/>
+    <pointer-type-def type-id='type-id-63' size-in-bits='64' id='type-id-92'/>
     <!-- std::char_traits<char>::char_type& -->
-    <reference-type-def kind='lvalue' type-id='type-id-70' size-in-bits='64' id='type-id-96'/>
+    <reference-type-def kind='lvalue' type-id='type-id-68' size-in-bits='64' id='type-id-93'/>
     <!-- std::char_traits<char>::char_type* -->
-    <pointer-type-def type-id='type-id-70' size-in-bits='64' id='type-id-97'/>
+    <pointer-type-def type-id='type-id-68' size-in-bits='64' id='type-id-94'/>
     <!-- std::ostream* -->
-    <pointer-type-def type-id='type-id-98' size-in-bits='64' id='type-id-99'/>
+    <pointer-type-def type-id='type-id-95' size-in-bits='64' id='type-id-96'/>
     <!-- typedef __va_list_tag __va_list_tag* -->
-    <pointer-type-def type-id='type-id-6' size-in-bits='64' id='type-id-100'/>
+    <pointer-type-def type-id='type-id-6' size-in-bits='64' id='type-id-97'/>
     <!-- void* -->
-    <pointer-type-def type-id='type-id-21' size-in-bits='64' id='type-id-8'/>
+    <pointer-type-def type-id='type-id-98' size-in-bits='64' id='type-id-8'/>
     <!-- wchar_t* -->
-    <pointer-type-def type-id='type-id-22' size-in-bits='64' id='type-id-101'/>
+    <pointer-type-def type-id='type-id-21' size-in-bits='64' id='type-id-99'/>
     <!-- wchar_t** -->
-    <pointer-type-def type-id='type-id-101' size-in-bits='64' id='type-id-102'/>
+    <pointer-type-def type-id='type-id-99' size-in-bits='64' id='type-id-100'/>
+    <!-- struct _IO_FILE -->
+    <class-decl name='_IO_FILE' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-26'/>
     <!-- namespace std -->
     <namespace-decl name='std'>
+      <!-- class std::allocator<char> -->
+      <class-decl name='allocator&lt;char&gt;' size-in-bits='8' visibility='default' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='92' column='1' id='type-id-56'>
+        <!-- class __gnu_cxx::new_allocator<char> -->
+        <base-class access='public' layout-offset-in-bits='0' type-id='type-id-40'/>
+        <member-type access='public'>
+          <!-- typedef std::size_t std::allocator<char>::size_type -->
+          <typedef-decl name='size_type' type-id='type-id-101' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='95' column='1' id='type-id-102'/>
+        </member-type>
+        <member-type access='public'>
+          <!-- typedef char& std::allocator<char>::reference -->
+          <typedef-decl name='reference' type-id='type-id-42' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='99' column='1' id='type-id-103'/>
+        </member-type>
+        <member-type access='public'>
+          <!-- typedef const char& std::allocator<char>::const_reference -->
+          <typedef-decl name='const_reference' type-id='type-id-49' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='100' column='1' id='type-id-104'/>
+        </member-type>
+      </class-decl>
       <!-- class std::basic_string<char, std::char_traits<char>, std::allocator<char> > -->
-      <class-decl name='basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;' size-in-bits='64' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2510' column='1' id='type-id-60'>
-        <member-type access='private'>
-          <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider -->
-          <class-decl name='_Alloc_hider' size-in-bits='64' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2670' column='1' id='type-id-92'>
-            <!-- class std::allocator<char> -->
-            <base-class access='public' layout-offset-in-bits='0' type-id='type-id-57'/>
-            <data-member access='public' layout-offset-in-bits='0'>
-              <!-- char* std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider::_M_p -->
-              <var-decl name='_M_p' type-id='type-id-35' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2675' column='1'/>
-            </data-member>
-          </class-decl>
+      <class-decl name='basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;' size-in-bits='64' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2510' column='1' id='type-id-59'>
+        <member-type access='public'>
+          <!-- typedef std::allocator<char> std::basic_string<char, std::char_traits<char>, std::allocator<char> >::allocator_type -->
+          <typedef-decl name='allocator_type' type-id='type-id-56' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2518' column='1' id='type-id-105'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef std::allocator<char>::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type -->
-          <typedef-decl name='size_type' type-id='type-id-103' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2519' column='1' id='type-id-68'/>
-        </member-type>
-        <member-type access='public'>
-          <!-- typedef std::allocator<char> std::basic_string<char, std::char_traits<char>, std::allocator<char> >::allocator_type -->
-          <typedef-decl name='allocator_type' type-id='type-id-57' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2518' column='1' id='type-id-104'/>
+          <typedef-decl name='size_type' type-id='type-id-102' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2519' column='1' id='type-id-66'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef std::allocator<char>::reference std::basic_string<char, std::char_traits<char>, std::allocator<char> >::reference -->
-          <typedef-decl name='reference' type-id='type-id-106' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2521' column='1' id='type-id-105'/>
+          <typedef-decl name='reference' type-id='type-id-103' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2521' column='1' id='type-id-106'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef std::allocator<char>::const_reference std::basic_string<char, std::char_traits<char>, std::allocator<char> >::const_reference -->
-          <typedef-decl name='const_reference' type-id='type-id-108' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2522' column='1' id='type-id-107'/>
+          <typedef-decl name='const_reference' type-id='type-id-104' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2522' column='1' id='type-id-107'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > std::basic_string<char, std::char_traits<char>, std::allocator<char> >::iterator -->
-          <typedef-decl name='iterator' type-id='type-id-110' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2525' column='1' id='type-id-109'/>
+          <typedef-decl name='iterator' type-id='type-id-108' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2525' column='1' id='type-id-109'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > std::basic_string<char, std::char_traits<char>, std::allocator<char> >::const_iterator -->
-          <typedef-decl name='const_iterator' type-id='type-id-112' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2527' column='1' id='type-id-111'/>
+          <typedef-decl name='const_iterator' type-id='type-id-110' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2527' column='1' id='type-id-111'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef std::reverse_iterator<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::basic_string<char, std::char_traits<char>, std::allocator<char> >::const_reverse_iterator -->
-          <typedef-decl name='const_reverse_iterator' type-id='type-id-114' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2528' column='1' id='type-id-113'/>
+          <typedef-decl name='const_reverse_iterator' type-id='type-id-112' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2528' column='1' id='type-id-113'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef std::reverse_iterator<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::basic_string<char, std::char_traits<char>, std::allocator<char> >::reverse_iterator -->
-          <typedef-decl name='reverse_iterator' type-id='type-id-116' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2529' column='1' id='type-id-115'/>
+          <typedef-decl name='reverse_iterator' type-id='type-id-114' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2529' column='1' id='type-id-115'/>
         </member-type>
         <member-type access='private'>
           <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base -->
-          <class-decl name='_Rep_base' size-in-bits='192' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2546' column='1' id='type-id-117'>
+          <class-decl name='_Rep_base' size-in-bits='192' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2546' column='1' id='type-id-116'>
             <data-member access='public' layout-offset-in-bits='0'>
               <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base::_M_length -->
-              <var-decl name='_M_length' type-id='type-id-68' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2548' column='1'/>
+              <var-decl name='_M_length' type-id='type-id-66' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2548' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='64'>
               <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base::_M_capacity -->
-              <var-decl name='_M_capacity' type-id='type-id-68' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2549' column='1'/>
+              <var-decl name='_M_capacity' type-id='type-id-66' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2549' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='128'>
               <!-- _Atomic_word std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base::_M_refcount -->
@@ -447,16 +449,16 @@
         </member-type>
         <member-type access='private'>
           <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep -->
-          <class-decl name='_Rep' size-in-bits='192' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2553' column='1' id='type-id-65'>
+          <class-decl name='_Rep' size-in-bits='192' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2553' column='1' id='type-id-63'>
             <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep_base -->
-            <base-class access='public' layout-offset-in-bits='0' type-id='type-id-117'/>
+            <base-class access='public' layout-offset-in-bits='0' type-id='type-id-116'/>
             <data-member access='public' static='yes'>
               <!-- static const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_max_size -->
-              <var-decl name='_S_max_size' type-id='type-id-69' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='494' column='1'/>
+              <var-decl name='_S_max_size' type-id='type-id-67' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='494' column='1'/>
             </data-member>
             <data-member access='public' static='yes'>
               <!-- static const char std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_terminal -->
-              <var-decl name='_S_terminal' type-id='type-id-49' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='499' column='1'/>
+              <var-decl name='_S_terminal' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='499' column='1'/>
             </data-member>
             <data-member access='public' static='yes'>
               <!-- static unsigned long int std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_empty_rep_storage[] -->
@@ -464,604 +466,496 @@
             </data-member>
           </class-decl>
         </member-type>
+        <member-type access='private'>
+          <!-- struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider -->
+          <class-decl name='_Alloc_hider' size-in-bits='64' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2670' column='1' id='type-id-89'>
+            <!-- class std::allocator<char> -->
+            <base-class access='public' layout-offset-in-bits='0' type-id='type-id-56'/>
+            <data-member access='public' layout-offset-in-bits='0'>
+              <!-- char* std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider::_M_p -->
+              <var-decl name='_M_p' type-id='type-id-25' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2675' column='1'/>
+            </data-member>
+          </class-decl>
+        </member-type>
         <data-member access='public' static='yes'>
           <!-- static const std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size_type std::basic_string<char, std::char_traits<char>, std::allocator<char> >::npos -->
-          <var-decl name='npos' type-id='type-id-69' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2683' column='1'/>
+          <var-decl name='npos' type-id='type-id-67' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2683' column='1'/>
         </data-member>
         <data-member access='private' layout-offset-in-bits='0'>
           <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_dataplus -->
-          <var-decl name='_M_dataplus' type-id='type-id-92' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2687' column='1'/>
+          <var-decl name='_M_dataplus' type-id='type-id-89' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2687' column='1'/>
         </data-member>
       </class-decl>
-      <!-- class std::allocator<char> -->
-      <class-decl name='allocator&lt;char&gt;' size-in-bits='8' visibility='default' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='92' column='1' id='type-id-57'>
-        <!-- class __gnu_cxx::new_allocator<char> -->
-        <base-class access='public' layout-offset-in-bits='0' type-id='type-id-41'/>
-        <member-type access='public'>
-          <!-- typedef std::size_t std::allocator<char>::size_type -->
-          <typedef-decl name='size_type' type-id='type-id-118' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='95' column='1' id='type-id-103'/>
-        </member-type>
-        <member-type access='public'>
-          <!-- typedef char& std::allocator<char>::reference -->
-          <typedef-decl name='reference' type-id='type-id-43' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='99' column='1' id='type-id-106'/>
-        </member-type>
-        <member-type access='public'>
-          <!-- typedef const char& std::allocator<char>::const_reference -->
-          <typedef-decl name='const_reference' type-id='type-id-50' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='100' column='1' id='type-id-108'/>
-        </member-type>
-      </class-decl>
-      <!-- typedef unsigned long int std::size_t -->
-      <typedef-decl name='size_t' type-id='type-id-17' filepath='/usr/include/c++/5.3.1/x86_64-redhat-linux/bits/c++config.h' line='1969' column='1' id='type-id-118'/>
       <!-- struct std::char_traits<char> -->
-      <class-decl name='char_traits&lt;char&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='233' column='1' id='type-id-119'>
+      <class-decl name='char_traits&lt;char&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='233' column='1' id='type-id-117'>
         <member-type access='public'>
           <!-- typedef char std::char_traits<char>::char_type -->
-          <typedef-decl name='char_type' type-id='type-id-2' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='235' column='1' id='type-id-70'/>
+          <typedef-decl name='char_type' type-id='type-id-2' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='235' column='1' id='type-id-68'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef int std::char_traits<char>::int_type -->
-          <typedef-decl name='int_type' type-id='type-id-11' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='236' column='1' id='type-id-74'/>
+          <typedef-decl name='int_type' type-id='type-id-11' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='236' column='1' id='type-id-72'/>
         </member-type>
         <member-function access='public' static='yes'>
           <!-- std::size_t std::char_traits<char>::length() -->
           <function-decl name='length' mangled-name='_ZNSt11char_traitsIcE6lengthEPKc' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='266' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNSt11char_traitsIcE6lengthEPKc'>
             <!-- parameter of type 'const std::char_traits<char>::char_type*' -->
-            <parameter type-id='type-id-73'/>
+            <parameter type-id='type-id-71'/>
             <!-- typedef std::size_t -->
-            <return type-id='type-id-118'/>
+            <return type-id='type-id-101'/>
           </function-decl>
         </member-function>
       </class-decl>
       <!-- typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::string -->
-      <typedef-decl name='string' type-id='type-id-60' filepath='/usr/include/c++/5.3.1/bits/stringfwd.h' line='74' column='1' id='type-id-77'/>
+      <typedef-decl name='string' type-id='type-id-59' filepath='/usr/include/c++/5.3.1/bits/stringfwd.h' line='74' column='1' id='type-id-75'/>
       <!-- typedef std::basic_ostream<char, std::char_traits<char> > std::ostream -->
-      <typedef-decl name='ostream' type-id='type-id-120' filepath='/usr/include/c++/5.3.1/iosfwd' line='141' column='1' id='type-id-98'/>
-      <!-- class std::reverse_iterator<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > -->
-      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-114'/>
-      <!-- class std::reverse_iterator<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > -->
-      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-116'/>
+      <typedef-decl name='ostream' type-id='type-id-118' filepath='/usr/include/c++/5.3.1/iosfwd' line='141' column='1' id='type-id-95'/>
+      <!-- typedef unsigned long int std::size_t -->
+      <typedef-decl name='size_t' type-id='type-id-17' filepath='/usr/include/c++/5.3.1/x86_64-redhat-linux/bits/c++config.h' line='1969' column='1' id='type-id-101'/>
       <!-- class std::basic_ostream<char, std::char_traits<char> > -->
-      <class-decl name='basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-120'/>
+      <class-decl name='basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-118'/>
+      <!-- class std::reverse_iterator<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > -->
+      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-112'/>
+      <!-- class std::reverse_iterator<__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > -->
+      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-114'/>
       <!-- std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(const char*, const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&) -->
       <function-decl name='operator+&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;' mangled-name='_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='1151' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_'>
         <!-- parameter of type 'const char*' -->
-        <parameter type-id='type-id-33' name='__lhs' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='1151' column='1'/>
+        <parameter type-id='type-id-29' name='__lhs' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='1151' column='1'/>
         <!-- parameter of type 'const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&' -->
-        <parameter type-id='type-id-63' name='__rhs' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='1152' column='1'/>
+        <parameter type-id='type-id-61' name='__rhs' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='1152' column='1'/>
         <!-- class std::basic_string<char, std::char_traits<char>, std::allocator<char> > -->
-        <return type-id='type-id-60'/>
+        <return type-id='type-id-59'/>
       </function-decl>
     </namespace-decl>
+    <!-- std::string foo(const std::string&) -->
+    <function-decl name='foo' mangled-name='_Z3fooRKSs' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='14' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3fooRKSs'>
+      <!-- parameter of type 'const std::string&' -->
+      <parameter type-id='type-id-77' name='s' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='14' column='1'/>
+      <!-- typedef std::string -->
+      <return type-id='type-id-75'/>
+    </function-decl>
+    <!-- std::ostream* bar(const std::string&) -->
+    <function-decl name='bar' mangled-name='_Z3barRKSs' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='21' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3barRKSs'>
+      <!-- parameter of type 'const std::string&' -->
+      <parameter type-id='type-id-77' name='str' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='21' column='1'/>
+      <!-- std::ostream* -->
+      <return type-id='type-id-96'/>
+    </function-decl>
     <!-- namespace __gnu_cxx -->
     <namespace-decl name='__gnu_cxx'>
       <!-- class __gnu_cxx::new_allocator<char> -->
-      <class-decl name='new_allocator&lt;char&gt;' size-in-bits='8' visibility='default' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='58' column='1' id='type-id-41'>
+      <class-decl name='new_allocator&lt;char&gt;' size-in-bits='8' visibility='default' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='58' column='1' id='type-id-40'>
         <member-type access='public'>
           <!-- typedef std::size_t __gnu_cxx::new_allocator<char>::size_type -->
-          <typedef-decl name='size_type' type-id='type-id-118' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='61' column='1' id='type-id-121'/>
+          <typedef-decl name='size_type' type-id='type-id-101' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='61' column='1' id='type-id-119'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef char* __gnu_cxx::new_allocator<char>::pointer -->
-          <typedef-decl name='pointer' type-id='type-id-35' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='63' column='1' id='type-id-122'/>
+          <typedef-decl name='pointer' type-id='type-id-25' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='63' column='1' id='type-id-120'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef const char* __gnu_cxx::new_allocator<char>::const_pointer -->
-          <typedef-decl name='const_pointer' type-id='type-id-33' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='64' column='1' id='type-id-123'/>
+          <typedef-decl name='const_pointer' type-id='type-id-29' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='64' column='1' id='type-id-121'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef char& __gnu_cxx::new_allocator<char>::reference -->
-          <typedef-decl name='reference' type-id='type-id-43' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='65' column='1' id='type-id-124'/>
+          <typedef-decl name='reference' type-id='type-id-42' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='65' column='1' id='type-id-122'/>
         </member-type>
         <member-type access='public'>
           <!-- typedef const char& __gnu_cxx::new_allocator<char>::const_reference -->
-          <typedef-decl name='const_reference' type-id='type-id-50' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='66' column='1' id='type-id-125'/>
+          <typedef-decl name='const_reference' type-id='type-id-49' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='66' column='1' id='type-id-123'/>
         </member-type>
       </class-decl>
+      <!-- struct __gnu_cxx::__numeric_traits_integer<char> -->
+      <class-decl name='__numeric_traits_integer&lt;char&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-124'>
+        <data-member access='public' static='yes'>
+          <!-- static const char __gnu_cxx::__numeric_traits_integer<char>::__min -->
+          <var-decl name='__min' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const char __gnu_cxx::__numeric_traits_integer<char>::__max -->
+          <var-decl name='__max' type-id='type-id-48' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIcE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const bool __gnu_cxx::__numeric_traits_integer<char>::__is_signed -->
+          <var-decl name='__is_signed' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const int __gnu_cxx::__numeric_traits_integer<char>::__digits -->
+          <var-decl name='__digits' type-id='type-id-51' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
       <!-- struct __gnu_cxx::__numeric_traits_integer<int> -->
-      <class-decl name='__numeric_traits_integer&lt;int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-126'>
+      <class-decl name='__numeric_traits_integer&lt;int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-125'>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<int>::__min -->
-          <var-decl name='__min' type-id='type-id-52' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+          <var-decl name='__min' type-id='type-id-51' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<int>::__max -->
-          <var-decl name='__max' type-id='type-id-52' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-51' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const bool __gnu_cxx::__numeric_traits_integer<int>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
+          <var-decl name='__is_signed' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<int>::__digits -->
-          <var-decl name='__digits' type-id='type-id-52' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
+          <var-decl name='__digits' type-id='type-id-51' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+      <!-- struct __gnu_cxx::__numeric_traits_integer<long int> -->
+      <class-decl name='__numeric_traits_integer&lt;long int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-126'>
+        <data-member access='public' static='yes'>
+          <!-- static const long int __gnu_cxx::__numeric_traits_integer<long int>::__min -->
+          <var-decl name='__min' type-id='type-id-52' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const long int __gnu_cxx::__numeric_traits_integer<long int>::__max -->
+          <var-decl name='__max' type-id='type-id-52' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const bool __gnu_cxx::__numeric_traits_integer<long int>::__is_signed -->
+          <var-decl name='__is_signed' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <!-- static const int __gnu_cxx::__numeric_traits_integer<long int>::__digits -->
+          <var-decl name='__digits' type-id='type-id-51' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
         </data-member>
       </class-decl>
       <!-- struct __gnu_cxx::__numeric_traits_integer<long unsigned int> -->
       <class-decl name='__numeric_traits_integer&lt;long unsigned int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-127'>
         <data-member access='public' static='yes'>
           <!-- static const unsigned long int __gnu_cxx::__numeric_traits_integer<long unsigned int>::__min -->
-          <var-decl name='__min' type-id='type-id-83' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+          <var-decl name='__min' type-id='type-id-80' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const unsigned long int __gnu_cxx::__numeric_traits_integer<long unsigned int>::__max -->
-          <var-decl name='__max' type-id='type-id-83' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-80' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const bool __gnu_cxx::__numeric_traits_integer<long unsigned int>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
+          <var-decl name='__is_signed' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<long unsigned int>::__digits -->
-          <var-decl name='__digits' type-id='type-id-52' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerImE8__digitsE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
-        </data-member>
-      </class-decl>
-      <!-- struct __gnu_cxx::__numeric_traits_integer<char> -->
-      <class-decl name='__numeric_traits_integer&lt;char&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-128'>
-        <data-member access='public' static='yes'>
-          <!-- static const char __gnu_cxx::__numeric_traits_integer<char>::__min -->
-          <var-decl name='__min' type-id='type-id-49' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const char __gnu_cxx::__numeric_traits_integer<char>::__max -->
-          <var-decl name='__max' type-id='type-id-49' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIcE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const bool __gnu_cxx::__numeric_traits_integer<char>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const int __gnu_cxx::__numeric_traits_integer<char>::__digits -->
-          <var-decl name='__digits' type-id='type-id-52' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
+          <var-decl name='__digits' type-id='type-id-51' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerImE8__digitsE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
         </data-member>
       </class-decl>
       <!-- struct __gnu_cxx::__numeric_traits_integer<short int> -->
-      <class-decl name='__numeric_traits_integer&lt;short int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-129'>
+      <class-decl name='__numeric_traits_integer&lt;short int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-128'>
         <data-member access='public' static='yes'>
           <!-- static const short int __gnu_cxx::__numeric_traits_integer<short int>::__min -->
-          <var-decl name='__min' type-id='type-id-56' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+          <var-decl name='__min' type-id='type-id-55' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const short int __gnu_cxx::__numeric_traits_integer<short int>::__max -->
-          <var-decl name='__max' type-id='type-id-56' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-55' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const bool __gnu_cxx::__numeric_traits_integer<short int>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
+          <var-decl name='__is_signed' type-id='type-id-47' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <!-- static const int __gnu_cxx::__numeric_traits_integer<short int>::__digits -->
-          <var-decl name='__digits' type-id='type-id-52' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
+          <var-decl name='__digits' type-id='type-id-51' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
         </data-member>
       </class-decl>
-      <!-- struct __gnu_cxx::__numeric_traits_integer<long int> -->
-      <class-decl name='__numeric_traits_integer&lt;long int&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' id='type-id-130'>
-        <data-member access='public' static='yes'>
-          <!-- static const long int __gnu_cxx::__numeric_traits_integer<long int>::__min -->
-          <var-decl name='__min' type-id='type-id-53' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const long int __gnu_cxx::__numeric_traits_integer<long int>::__max -->
-          <var-decl name='__max' type-id='type-id-53' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const bool __gnu_cxx::__numeric_traits_integer<long int>::__is_signed -->
-          <var-decl name='__is_signed' type-id='type-id-48' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='63' column='1'/>
-        </data-member>
-        <data-member access='public' static='yes'>
-          <!-- static const int __gnu_cxx::__numeric_traits_integer<long int>::__digits -->
-          <var-decl name='__digits' type-id='type-id-52' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
-        </data-member>
-      </class-decl>
-      <!-- class __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > -->
-      <class-decl name='__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-110'/>
       <!-- class __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > -->
-      <class-decl name='__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-112'/>
+      <class-decl name='__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-110'/>
+      <!-- class __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > -->
+      <class-decl name='__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-108'/>
     </namespace-decl>
-    <!-- wint_t btowc(int) -->
-    <function-decl name='btowc' filepath='/usr/include/wchar.h' line='353' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- char* setlocale(int, const char*) -->
+    <function-decl name='setlocale' filepath='/usr/include/locale.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-11'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-29'/>
+      <!-- char* -->
+      <return type-id='type-id-25'/>
     </function-decl>
-    <!-- wint_t fgetwc(__FILE*) -->
-    <function-decl name='fgetwc' filepath='/usr/include/wchar.h' line='745' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
+    <!-- lconv* localeconv() -->
+    <function-decl name='localeconv' filepath='/usr/include/locale.h' line='127' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- lconv* -->
+      <return type-id='type-id-84'/>
     </function-decl>
-    <!-- wchar_t* fgetws(wchar_t*, int, __FILE*) -->
-    <function-decl name='fgetws' filepath='/usr/include/wchar.h' line='774' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- wchar_t* wcscpy(wchar_t*, const wchar_t*) -->
+    <function-decl name='wcscpy' filepath='/usr/include/wchar.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-11'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
       <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
+      <return type-id='type-id-99'/>
     </function-decl>
-    <!-- wint_t fputwc(wchar_t, __FILE*) -->
-    <function-decl name='fputwc' filepath='/usr/include/wchar.h' line='759' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-22'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- int fputws(const wchar_t*, __FILE*) -->
-    <function-decl name='fputws' filepath='/usr/include/wchar.h' line='781' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int fwide(__FILE*, int) -->
-    <function-decl name='fwide' filepath='/usr/include/wchar.h' line='587' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-11'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int fwprintf(__FILE*, const wchar_t*, ...) -->
-    <function-decl name='fwprintf' filepath='/usr/include/wchar.h' line='594' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int fwscanf(__FILE*, const wchar_t*, ...) -->
-    <function-decl name='fwscanf' filepath='/usr/include/wchar.h' line='635' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- wint_t getwc(__FILE*) -->
-    <function-decl name='getwc' filepath='/usr/include/wchar.h' line='746' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- wint_t getwchar() -->
-    <function-decl name='getwchar' filepath='/usr/include/wchar.h' line='752' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- size_t mbrlen(const char*, size_t, mbstate_t*) -->
-    <function-decl name='mbrlen' filepath='/usr/include/wchar.h' line='376' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-33'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-88'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*) -->
-    <function-decl name='mbrtowc' filepath='/usr/include/wchar.h' line='365' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wcsncpy' filepath='/usr/include/wchar.h' line='150' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-33'/>
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-88'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- int mbsinit(const mbstate_t*) -->
-    <function-decl name='mbsinit' filepath='/usr/include/wchar.h' line='361' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const mbstate_t*' -->
-      <parameter type-id='type-id-55'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*) -->
-    <function-decl name='mbsrtowcs' filepath='/usr/include/wchar.h' line='408' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const char**' -->
-      <parameter type-id='type-id-51'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-88'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- wint_t putwc(wchar_t, __FILE*) -->
-    <function-decl name='putwc' filepath='/usr/include/wchar.h' line='760' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-22'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- wint_t putwchar(wchar_t) -->
-    <function-decl name='putwchar' filepath='/usr/include/wchar.h' line='766' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-22'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- int swprintf(wchar_t*, size_t, const wchar_t*, ...) -->
-    <function-decl name='swprintf' filepath='/usr/include/wchar.h' line='604' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int swscanf(const wchar_t*, const wchar_t*, ...) -->
-    <function-decl name='swscanf' filepath='/usr/include/wchar.h' line='645' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- wint_t ungetwc(wint_t, __FILE*) -->
-    <function-decl name='ungetwc' filepath='/usr/include/wchar.h' line='789' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'typedef wint_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
-    </function-decl>
-    <!-- int vfwprintf(__FILE*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vfwprintf' filepath='/usr/include/wchar.h' line='612' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-100'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int vfwscanf(__FILE*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vfwscanf' filepath='/usr/include/wchar.h' line='689' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type '__FILE*' -->
-      <parameter type-id='type-id-40'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-100'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int vswprintf(wchar_t*, size_t, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vswprintf' filepath='/usr/include/wchar.h' line='625' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-100'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int vswscanf(const wchar_t*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vswscanf' filepath='/usr/include/wchar.h' line='701' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-100'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int vwprintf(const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vwprintf' filepath='/usr/include/wchar.h' line='620' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-100'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int vwscanf(const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
-    <function-decl name='vwscanf' filepath='/usr/include/wchar.h' line='697' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
-      <parameter type-id='type-id-100'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- size_t wcrtomb(char*, wchar_t, mbstate_t*) -->
-    <function-decl name='wcrtomb' filepath='/usr/include/wchar.h' line='370' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'char*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-22'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-88'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
+      <parameter type-id='type-id-37'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
     </function-decl>
     <!-- wchar_t* wcscat(wchar_t*, const wchar_t*) -->
     <function-decl name='wcscat' filepath='/usr/include/wchar.h' line='155' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
+      <parameter type-id='type-id-99'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
+      <return type-id='type-id-99'/>
+    </function-decl>
+    <!-- wchar_t* wcsncat(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wcsncat' filepath='/usr/include/wchar.h' line='158' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
     </function-decl>
     <!-- int wcscmp(const wchar_t*, const wchar_t*) -->
     <function-decl name='wcscmp' filepath='/usr/include/wchar.h' line='163' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int wcsncmp(const wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wcsncmp' filepath='/usr/include/wchar.h' line='166' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
       <!-- int -->
       <return type-id='type-id-11'/>
     </function-decl>
     <!-- int wcscoll(const wchar_t*, const wchar_t*) -->
     <function-decl name='wcscoll' filepath='/usr/include/wchar.h' line='192' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- int -->
       <return type-id='type-id-11'/>
     </function-decl>
-    <!-- wchar_t* wcscpy(wchar_t*, const wchar_t*) -->
-    <function-decl name='wcscpy' filepath='/usr/include/wchar.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- size_t wcsxfrm(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wcsxfrm' filepath='/usr/include/wchar.h' line='196' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
+      <parameter type-id='type-id-99'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
     </function-decl>
     <!-- size_t wcscspn(const wchar_t*, const wchar_t*) -->
     <function-decl name='wcscspn' filepath='/usr/include/wchar.h' line='252' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- size_t wcsftime(wchar_t*, size_t, const wchar_t*, const tm*) -->
-    <function-decl name='wcsftime' filepath='/usr/include/wchar.h' line='855' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'const tm*' -->
       <parameter type-id='type-id-82'/>
       <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- size_t wcslen(const wchar_t*) -->
-    <function-decl name='wcslen' filepath='/usr/include/wchar.h' line='287' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- wchar_t* wcsncat(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wcsncat' filepath='/usr/include/wchar.h' line='158' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
-    </function-decl>
-    <!-- int wcsncmp(const wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wcsncmp' filepath='/usr/include/wchar.h' line='166' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wcsncpy' filepath='/usr/include/wchar.h' line='150' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
-    </function-decl>
-    <!-- size_t wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*) -->
-    <function-decl name='wcsrtombs' filepath='/usr/include/wchar.h' line='414' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'char*' -->
-      <parameter type-id='type-id-35'/>
-      <!-- parameter of type 'const wchar_t**' -->
-      <parameter type-id='type-id-86'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- parameter of type 'mbstate_t*' -->
-      <parameter type-id='type-id-88'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
+      <return type-id='type-id-37'/>
     </function-decl>
     <!-- size_t wcsspn(const wchar_t*, const wchar_t*) -->
     <function-decl name='wcsspn' filepath='/usr/include/wchar.h' line='256' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**) -->
+    <function-decl name='wcstok' filepath='/usr/include/wchar.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'wchar_t**' -->
+      <parameter type-id='type-id-100'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
+    </function-decl>
+    <!-- size_t wcslen(const wchar_t*) -->
+    <function-decl name='wcslen' filepath='/usr/include/wchar.h' line='287' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- int wmemcmp(const wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wmemcmp' filepath='/usr/include/wchar.h' line='325' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wmemcpy' filepath='/usr/include/wchar.h' line='329' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
+    </function-decl>
+    <!-- wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t) -->
+    <function-decl name='wmemmove' filepath='/usr/include/wchar.h' line='334' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
+    </function-decl>
+    <!-- wchar_t* wmemset(wchar_t*, wchar_t, size_t) -->
+    <function-decl name='wmemset' filepath='/usr/include/wchar.h' line='338' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-21'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
+    </function-decl>
+    <!-- wint_t btowc(int) -->
+    <function-decl name='btowc' filepath='/usr/include/wchar.h' line='353' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-11'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- int wctob(wint_t) -->
+    <function-decl name='wctob' filepath='/usr/include/wchar.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'typedef wint_t' -->
+      <parameter type-id='type-id-38'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int mbsinit(const mbstate_t*) -->
+    <function-decl name='mbsinit' filepath='/usr/include/wchar.h' line='361' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const mbstate_t*' -->
+      <parameter type-id='type-id-54'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*) -->
+    <function-decl name='mbrtowc' filepath='/usr/include/wchar.h' line='365' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-29'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'mbstate_t*' -->
       <parameter type-id='type-id-85'/>
       <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- size_t wcrtomb(char*, wchar_t, mbstate_t*) -->
+    <function-decl name='wcrtomb' filepath='/usr/include/wchar.h' line='370' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'char*' -->
+      <parameter type-id='type-id-25'/>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-21'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-85'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- size_t mbrlen(const char*, size_t, mbstate_t*) -->
+    <function-decl name='mbrlen' filepath='/usr/include/wchar.h' line='376' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-29'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-85'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*) -->
+    <function-decl name='mbsrtowcs' filepath='/usr/include/wchar.h' line='408' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'const char**' -->
+      <parameter type-id='type-id-50'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-85'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- size_t wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*) -->
+    <function-decl name='wcsrtombs' filepath='/usr/include/wchar.h' line='414' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'char*' -->
+      <parameter type-id='type-id-25'/>
+      <!-- parameter of type 'const wchar_t**' -->
+      <parameter type-id='type-id-83'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'mbstate_t*' -->
+      <parameter type-id='type-id-85'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
     </function-decl>
     <!-- double wcstod(const wchar_t*, wchar_t**) -->
     <function-decl name='wcstod' filepath='/usr/include/wchar.h' line='450' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
+      <parameter type-id='type-id-100'/>
       <!-- double -->
       <return type-id='type-id-9'/>
     </function-decl>
     <!-- float wcstof(const wchar_t*, wchar_t**) -->
     <function-decl name='wcstof' filepath='/usr/include/wchar.h' line='457' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
+      <parameter type-id='type-id-100'/>
       <!-- float -->
       <return type-id='type-id-10'/>
     </function-decl>
-    <!-- wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**) -->
-    <function-decl name='wcstok' filepath='/usr/include/wchar.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
+    <!-- long double wcstold(const wchar_t*, wchar_t**) -->
+    <function-decl name='wcstold' filepath='/usr/include/wchar.h' line='459' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
+      <parameter type-id='type-id-100'/>
+      <!-- long double -->
+      <return type-id='type-id-12'/>
     </function-decl>
     <!-- long int wcstol(const wchar_t*, wchar_t**, int) -->
     <function-decl name='wcstol' filepath='/usr/include/wchar.h' line='468' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
+      <parameter type-id='type-id-100'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-11'/>
       <!-- long int -->
@@ -1070,107 +964,20 @@
     <!-- unsigned long int wcstoul(const wchar_t*, wchar_t**, int) -->
     <function-decl name='wcstoul' filepath='/usr/include/wchar.h' line='473' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
+      <parameter type-id='type-id-100'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-11'/>
       <!-- unsigned long int -->
       <return type-id='type-id-17'/>
     </function-decl>
-    <!-- size_t wcsxfrm(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wcsxfrm' filepath='/usr/include/wchar.h' line='196' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- typedef size_t -->
-      <return type-id='type-id-27'/>
-    </function-decl>
-    <!-- int wctob(wint_t) -->
-    <function-decl name='wctob' filepath='/usr/include/wchar.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'typedef wint_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int wmemcmp(const wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wmemcmp' filepath='/usr/include/wchar.h' line='325' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wmemcpy' filepath='/usr/include/wchar.h' line='329' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
-    </function-decl>
-    <!-- wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t) -->
-    <function-decl name='wmemmove' filepath='/usr/include/wchar.h' line='334' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
-    </function-decl>
-    <!-- wchar_t* wmemset(wchar_t*, wchar_t, size_t) -->
-    <function-decl name='wmemset' filepath='/usr/include/wchar.h' line='338' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'wchar_t*' -->
-      <parameter type-id='type-id-101'/>
-      <!-- parameter of type 'wchar_t' -->
-      <parameter type-id='type-id-22'/>
-      <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-27'/>
-      <!-- wchar_t* -->
-      <return type-id='type-id-101'/>
-    </function-decl>
-    <!-- int wprintf(const wchar_t*, ...) -->
-    <function-decl name='wprintf' filepath='/usr/include/wchar.h' line='601' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- int wscanf(const wchar_t*, ...) -->
-    <function-decl name='wscanf' filepath='/usr/include/wchar.h' line='642' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <parameter is-variadic='yes'/>
-      <!-- int -->
-      <return type-id='type-id-11'/>
-    </function-decl>
-    <!-- long double wcstold(const wchar_t*, wchar_t**) -->
-    <function-decl name='wcstold' filepath='/usr/include/wchar.h' line='459' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
-      <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
-      <!-- long double -->
-      <return type-id='type-id-12'/>
-    </function-decl>
     <!-- long long int wcstoll(const wchar_t*, wchar_t**, int) -->
     <function-decl name='wcstoll' filepath='/usr/include/wchar.h' line='483' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
+      <parameter type-id='type-id-100'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-11'/>
       <!-- long long int -->
@@ -1179,75 +986,264 @@
     <!-- long long unsigned int wcstoull(const wchar_t*, wchar_t**, int) -->
     <function-decl name='wcstoull' filepath='/usr/include/wchar.h' line='490' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const wchar_t*' -->
-      <parameter type-id='type-id-85'/>
+      <parameter type-id='type-id-82'/>
       <!-- parameter of type 'wchar_t**' -->
-      <parameter type-id='type-id-102'/>
+      <parameter type-id='type-id-100'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-11'/>
       <!-- long long unsigned int -->
       <return type-id='type-id-15'/>
     </function-decl>
-    <!-- char* setlocale(int, const char*) -->
-    <function-decl name='setlocale' filepath='/usr/include/locale.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
+    <!-- int fwide(__FILE*, int) -->
+    <function-decl name='fwide' filepath='/usr/include/wchar.h' line='587' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-11'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-33'/>
-      <!-- char* -->
-      <return type-id='type-id-35'/>
-    </function-decl>
-    <!-- lconv* localeconv() -->
-    <function-decl name='localeconv' filepath='/usr/include/locale.h' line='127' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- lconv* -->
-      <return type-id='type-id-87'/>
-    </function-decl>
-    <!-- int iswctype(wint_t, wctype_t) -->
-    <function-decl name='iswctype' filepath='/usr/include/wctype.h' line='175' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'typedef wint_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type 'typedef wctype_t' -->
-      <parameter type-id='type-id-36'/>
       <!-- int -->
       <return type-id='type-id-11'/>
     </function-decl>
-    <!-- wint_t towctrans(wint_t, wctrans_t) -->
-    <function-decl name='towctrans' filepath='/usr/include/wctype.h' line='221' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'typedef wint_t' -->
-      <parameter type-id='type-id-24'/>
-      <!-- parameter of type 'typedef wctrans_t' -->
-      <parameter type-id='type-id-38'/>
-      <!-- typedef wint_t -->
-      <return type-id='type-id-24'/>
+    <!-- int fwprintf(__FILE*, const wchar_t*, ...) -->
+    <function-decl name='fwprintf' filepath='/usr/include/wchar.h' line='594' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
     </function-decl>
-    <!-- wctrans_t wctrans(const char*) -->
-    <function-decl name='wctrans' filepath='/usr/include/wctype.h' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-33'/>
-      <!-- typedef wctrans_t -->
+    <!-- int wprintf(const wchar_t*, ...) -->
+    <function-decl name='wprintf' filepath='/usr/include/wchar.h' line='601' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int swprintf(wchar_t*, size_t, const wchar_t*, ...) -->
+    <function-decl name='swprintf' filepath='/usr/include/wchar.h' line='604' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int vfwprintf(__FILE*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vfwprintf' filepath='/usr/include/wchar.h' line='612' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-97'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int vwprintf(const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vwprintf' filepath='/usr/include/wchar.h' line='620' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-97'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int vswprintf(wchar_t*, size_t, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vswprintf' filepath='/usr/include/wchar.h' line='625' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-97'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int fwscanf(__FILE*, const wchar_t*, ...) -->
+    <function-decl name='fwscanf' filepath='/usr/include/wchar.h' line='635' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int wscanf(const wchar_t*, ...) -->
+    <function-decl name='wscanf' filepath='/usr/include/wchar.h' line='642' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int swscanf(const wchar_t*, const wchar_t*, ...) -->
+    <function-decl name='swscanf' filepath='/usr/include/wchar.h' line='645' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <parameter is-variadic='yes'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int vfwscanf(__FILE*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vfwscanf' filepath='/usr/include/wchar.h' line='689' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-97'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int vwscanf(const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vwscanf' filepath='/usr/include/wchar.h' line='697' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-97'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- int vswscanf(const wchar_t*, const wchar_t*, typedef __va_list_tag __va_list_tag*) -->
+    <function-decl name='vswscanf' filepath='/usr/include/wchar.h' line='701' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'typedef __va_list_tag __va_list_tag*' -->
+      <parameter type-id='type-id-97'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- wint_t fgetwc(__FILE*) -->
+    <function-decl name='fgetwc' filepath='/usr/include/wchar.h' line='745' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- typedef wint_t -->
       <return type-id='type-id-38'/>
     </function-decl>
+    <!-- wint_t getwc(__FILE*) -->
+    <function-decl name='getwc' filepath='/usr/include/wchar.h' line='746' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- wint_t getwchar() -->
+    <function-decl name='getwchar' filepath='/usr/include/wchar.h' line='752' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- wint_t fputwc(wchar_t, __FILE*) -->
+    <function-decl name='fputwc' filepath='/usr/include/wchar.h' line='759' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-21'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- wint_t putwc(wchar_t, __FILE*) -->
+    <function-decl name='putwc' filepath='/usr/include/wchar.h' line='760' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-21'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- wint_t putwchar(wchar_t) -->
+    <function-decl name='putwchar' filepath='/usr/include/wchar.h' line='766' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t' -->
+      <parameter type-id='type-id-21'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- wchar_t* fgetws(wchar_t*, int, __FILE*) -->
+    <function-decl name='fgetws' filepath='/usr/include/wchar.h' line='774' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-11'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- wchar_t* -->
+      <return type-id='type-id-99'/>
+    </function-decl>
+    <!-- int fputws(const wchar_t*, __FILE*) -->
+    <function-decl name='fputws' filepath='/usr/include/wchar.h' line='781' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- wint_t ungetwc(wint_t, __FILE*) -->
+    <function-decl name='ungetwc' filepath='/usr/include/wchar.h' line='789' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'typedef wint_t' -->
+      <parameter type-id='type-id-38'/>
+      <!-- parameter of type '__FILE*' -->
+      <parameter type-id='type-id-39'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
+    </function-decl>
+    <!-- size_t wcsftime(wchar_t*, size_t, const wchar_t*, const tm*) -->
+    <function-decl name='wcsftime' filepath='/usr/include/wchar.h' line='855' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'wchar_t*' -->
+      <parameter type-id='type-id-99'/>
+      <!-- parameter of type 'typedef size_t' -->
+      <parameter type-id='type-id-37'/>
+      <!-- parameter of type 'const wchar_t*' -->
+      <parameter type-id='type-id-82'/>
+      <!-- parameter of type 'const tm*' -->
+      <parameter type-id='type-id-79'/>
+      <!-- typedef size_t -->
+      <return type-id='type-id-37'/>
+    </function-decl>
     <!-- wctype_t wctype(const char*) -->
     <function-decl name='wctype' filepath='/usr/include/wctype.h' line='171' column='1' visibility='default' binding='global' size-in-bits='64'>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-33'/>
+      <parameter type-id='type-id-29'/>
       <!-- typedef wctype_t -->
+      <return type-id='type-id-34'/>
+    </function-decl>
+    <!-- int iswctype(wint_t, wctype_t) -->
+    <function-decl name='iswctype' filepath='/usr/include/wctype.h' line='175' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'typedef wint_t' -->
+      <parameter type-id='type-id-38'/>
+      <!-- parameter of type 'typedef wctype_t' -->
+      <parameter type-id='type-id-34'/>
+      <!-- int -->
+      <return type-id='type-id-11'/>
+    </function-decl>
+    <!-- wctrans_t wctrans(const char*) -->
+    <function-decl name='wctrans' filepath='/usr/include/wctype.h' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-29'/>
+      <!-- typedef wctrans_t -->
       <return type-id='type-id-36'/>
     </function-decl>
-    <!-- std::string foo(const std::string&) -->
-    <function-decl name='foo' mangled-name='_Z3fooRKSs' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='14' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3fooRKSs'>
-      <!-- parameter of type 'const std::string&' -->
-      <parameter type-id='type-id-80' name='s' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='14' column='1'/>
-      <!-- typedef std::string -->
-      <return type-id='type-id-77'/>
+    <!-- wint_t towctrans(wint_t, wctrans_t) -->
+    <function-decl name='towctrans' filepath='/usr/include/wctype.h' line='221' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <!-- parameter of type 'typedef wint_t' -->
+      <parameter type-id='type-id-38'/>
+      <!-- parameter of type 'typedef wctrans_t' -->
+      <parameter type-id='type-id-36'/>
+      <!-- typedef wint_t -->
+      <return type-id='type-id-38'/>
     </function-decl>
-    <!-- std::ostream* bar(const std::string&) -->
-    <function-decl name='bar' mangled-name='_Z3barRKSs' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='21' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3barRKSs'>
-      <!-- parameter of type 'const std::string&' -->
-      <parameter type-id='type-id-80' name='str' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='21' column='1'/>
-      <!-- std::ostream* -->
-      <return type-id='type-id-99'/>
-    </function-decl>
-    <!-- struct _IO_FILE -->
-    <class-decl name='_IO_FILE' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-25'/>
+    <!-- void -->
+    <type-decl name='void' id='type-id-98'/>
   </abi-instr>
 </abi-corpus>
diff --git a/tests/data/test-annotate/test-anonymous-members-0.o.abi b/tests/data/test-annotate/test-anonymous-members-0.o.abi
index d71cc17..52eeee1 100644
--- a/tests/data/test-annotate/test-anonymous-members-0.o.abi
+++ b/tests/data/test-annotate/test-anonymous-members-0.o.abi
@@ -1,4 +1,4 @@
-<abi-corpus version='2.0' architecture='elf-amd-x86_64'>
+<abi-corpus version='2.1' architecture='elf-amd-x86_64'>
   <elf-function-symbols>
     <!-- foo(S&) -->
     <elf-symbol name='_Z3fooR1S' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
@@ -14,13 +14,11 @@
     <type-decl name='unnamed-enum-underlying-type-32' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='type-id-4'/>
     <!-- unsigned int -->
     <type-decl name='unsigned int' size-in-bits='32' id='type-id-5'/>
-    <!-- void -->
-    <type-decl name='void' id='type-id-6'/>
     <!-- struct S -->
-    <class-decl name='S' size-in-bits='256' is-struct='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='1' column='1' id='type-id-7'>
+    <class-decl name='S' size-in-bits='256' is-struct='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='1' column='1' id='type-id-6'>
       <member-type access='public'>
         <!-- struct {int m;} -->
-        <class-decl name='__anonymous_struct__' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='4' column='1' id='type-id-8'>
+        <class-decl name='__anonymous_struct__' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='4' column='1' id='type-id-7'>
           <data-member access='public' layout-offset-in-bits='0'>
             <!-- int m -->
             <var-decl name='m' type-id='type-id-3' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='5' column='1'/>
@@ -29,7 +27,7 @@
       </member-type>
       <member-type access='public'>
         <!-- struct {char bar;} -->
-        <class-decl name='__anonymous_struct__1' size-in-bits='8' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='9' column='1' id='type-id-9'>
+        <class-decl name='__anonymous_struct__1' size-in-bits='8' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='9' column='1' id='type-id-8'>
           <data-member access='public' layout-offset-in-bits='0'>
             <!-- char bar -->
             <var-decl name='bar' type-id='type-id-1' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='10' column='1'/>
@@ -38,7 +36,7 @@
       </member-type>
       <member-type access='public'>
         <!-- struct {char baz;} -->
-        <class-decl name='__anonymous_struct__2' size-in-bits='8' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='14' column='1' id='type-id-10'>
+        <class-decl name='__anonymous_struct__2' size-in-bits='8' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='14' column='1' id='type-id-9'>
           <data-member access='public' layout-offset-in-bits='0'>
             <!-- char baz -->
             <var-decl name='baz' type-id='type-id-1' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='15' column='1'/>
@@ -47,7 +45,7 @@
       </member-type>
       <member-type access='public'>
         <!-- enum S::__anonymous_enum__ -->
-        <enum-decl name='__anonymous_enum__' is-anonymous='yes' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='18' column='1' id='type-id-11'>
+        <enum-decl name='__anonymous_enum__' is-anonymous='yes' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='18' column='1' id='type-id-10'>
           <underlying-type type-id='type-id-4'/>
           <enumerator name='one' value='0'/>
           <enumerator name='two' value='1'/>
@@ -55,7 +53,7 @@
       </member-type>
       <member-type access='public'>
         <!-- enum S::__anonymous_enum__1 -->
-        <enum-decl name='__anonymous_enum__1' is-anonymous='yes' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='20' column='1' id='type-id-12'>
+        <enum-decl name='__anonymous_enum__1' is-anonymous='yes' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='20' column='1' id='type-id-11'>
           <underlying-type type-id='type-id-4'/>
           <enumerator name='three' value='0'/>
           <enumerator name='four' value='1'/>
@@ -63,7 +61,7 @@
       </member-type>
       <member-type access='public'>
         <!-- enum S::__anonymous_enum__2 -->
-        <enum-decl name='__anonymous_enum__2' is-anonymous='yes' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='22' column='1' id='type-id-13'>
+        <enum-decl name='__anonymous_enum__2' is-anonymous='yes' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='22' column='1' id='type-id-12'>
           <underlying-type type-id='type-id-4'/>
           <enumerator name='five' value='0'/>
           <enumerator name='six' value='1'/>
@@ -71,7 +69,7 @@
       </member-type>
       <member-type access='public'>
         <!-- union {int a; char b;} -->
-        <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='24' column='1' id='type-id-14'>
+        <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='24' column='1' id='type-id-13'>
           <data-member access='public'>
             <!-- int a -->
             <var-decl name='a' type-id='type-id-3' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='24' column='1'/>
@@ -84,7 +82,7 @@
       </member-type>
       <member-type access='public'>
         <!-- union {unsigned int c; double d;} -->
-        <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='26' column='1' id='type-id-15'>
+        <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='26' column='1' id='type-id-14'>
           <data-member access='public'>
             <!-- unsigned int c -->
             <var-decl name='c' type-id='type-id-5' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='26' column='1'/>
@@ -97,47 +95,47 @@
       </member-type>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- struct {int m;} -->
-        <var-decl name='' type-id='type-id-8' visibility='default'/>
+        <var-decl name='' type-id='type-id-7' visibility='default'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
         <!-- struct {char bar;} -->
-        <var-decl name='' type-id='type-id-9' visibility='default'/>
+        <var-decl name='' type-id='type-id-8' visibility='default'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='40'>
         <!-- struct {char baz;} -->
-        <var-decl name='' type-id='type-id-10' visibility='default'/>
+        <var-decl name='' type-id='type-id-9' visibility='default'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- S::__anonymous_enum__ S::e1 -->
-        <var-decl name='e1' type-id='type-id-11' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='18' column='1'/>
+        <var-decl name='e1' type-id='type-id-10' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='18' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='96'>
         <!-- S::__anonymous_enum__1 S::e2 -->
-        <var-decl name='e2' type-id='type-id-12' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='20' column='1'/>
+        <var-decl name='e2' type-id='type-id-11' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='20' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- S::__anonymous_enum__2 S::e3 -->
-        <var-decl name='e3' type-id='type-id-13' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='22' column='1'/>
+        <var-decl name='e3' type-id='type-id-12' visibility='default' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='22' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='160'>
         <!-- union {int a; char b;} -->
-        <var-decl name='' type-id='type-id-14' visibility='default'/>
+        <var-decl name='' type-id='type-id-13' visibility='default'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- union {unsigned int c; double d;} -->
-        <var-decl name='' type-id='type-id-15' visibility='default'/>
+        <var-decl name='' type-id='type-id-14' visibility='default'/>
       </data-member>
     </class-decl>
     <!-- S& -->
-    <qualified-type-def type-id='type-id-16' id='type-id-17'/>
-    <!-- S& -->
-    <reference-type-def kind='lvalue' type-id='type-id-7' size-in-bits='64' id='type-id-16'/>
+    <reference-type-def kind='lvalue' type-id='type-id-6' size-in-bits='64' id='type-id-15'/>
     <!-- void foo(S&) -->
     <function-decl name='foo' mangled-name='_Z3fooR1S' filepath='/home/dodji/git/libabigail/fixes/tests/data/test-annotate/test-anonymous-members-0.cc' line='30' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3fooR1S'>
       <!-- parameter of type 'S&' -->
-      <parameter type-id='type-id-17'/>
+      <parameter type-id='type-id-15'/>
       <!-- void -->
-      <return type-id='type-id-6'/>
+      <return type-id='type-id-16'/>
     </function-decl>
+    <!-- void -->
+    <type-decl name='void' id='type-id-16'/>
   </abi-instr>
 </abi-corpus>
diff --git a/tests/data/test-annotate/test0.abi b/tests/data/test-annotate/test0.abi
index 97aa4a2..9fef170 100644
--- a/tests/data/test-annotate/test0.abi
+++ b/tests/data/test-annotate/test0.abi
@@ -1,4 +1,4 @@
-<abi-corpus version='2.0' architecture='elf-amd-x86_64'>
+<abi-corpus version='2.1' architecture='elf-amd-x86_64'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
@@ -48,69 +48,65 @@
     <type-decl name='unnamed-enum-underlying-type-32' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='type-id-5'/>
     <!-- variadic parameter type -->
     <type-decl name='variadic parameter type' id='type-id-6'/>
-    <!-- void -->
-    <type-decl name='void' id='type-id-7'/>
     <!-- char* -->
-    <pointer-type-def type-id='type-id-1' size-in-bits='64' id='type-id-8'/>
+    <pointer-type-def type-id='type-id-1' size-in-bits='64' id='type-id-7'/>
     <!-- const int -->
-    <qualified-type-def type-id='type-id-2' const='yes' id='type-id-9'/>
+    <qualified-type-def type-id='type-id-2' const='yes' id='type-id-8'/>
     <!-- const long int -->
-    <qualified-type-def type-id='type-id-3' const='yes' id='type-id-10'/>
+    <qualified-type-def type-id='type-id-3' const='yes' id='type-id-9'/>
     <!-- int& -->
-    <qualified-type-def type-id='type-id-11' id='type-id-12'/>
-    <!-- int& -->
-    <reference-type-def kind='lvalue' type-id='type-id-2' size-in-bits='64' id='type-id-11'/>
+    <reference-type-def kind='lvalue' type-id='type-id-2' size-in-bits='64' id='type-id-10'/>
     <!-- ns0::E& -->
-    <qualified-type-def type-id='type-id-13' id='type-id-14'/>
-    <!-- ns0::E& -->
-    <reference-type-def kind='lvalue' type-id='type-id-15' size-in-bits='64' id='type-id-13'/>
+    <reference-type-def kind='lvalue' type-id='type-id-11' size-in-bits='64' id='type-id-12'/>
     <!-- volatile const long int -->
-    <qualified-type-def type-id='type-id-10' volatile='yes' id='type-id-16'/>
+    <qualified-type-def type-id='type-id-9' volatile='yes' id='type-id-13'/>
+    <!-- int global -->
+    <var-decl name='global' type-id='type-id-2' mangled-name='global' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='3' column='1' elf-symbol-id='global'/>
     <!-- namespace ns0 -->
     <namespace-decl name='ns0'>
       <!-- enum ns0::E -->
-      <enum-decl name='E' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='19' column='1' id='type-id-15'>
+      <enum-decl name='E' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='19' column='1' id='type-id-11'>
         <underlying-type type-id='type-id-5'/>
         <enumerator name='e0' value='0'/>
         <enumerator name='e1' value='1'/>
       </enum-decl>
       <!-- typedef long long int ns0::long_long -->
-      <typedef-decl name='long_long' type-id='type-id-4' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='25' column='1' id='type-id-17'/>
+      <typedef-decl name='long_long' type-id='type-id-4' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='25' column='1' id='type-id-14'/>
       <!-- void ns0::bar(const int, ...) -->
       <function-decl name='bar' mangled-name='_ZN3ns03barEiz' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='12' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN3ns03barEiz'>
         <!-- parameter of type 'const int' -->
-        <parameter type-id='type-id-9' name='c' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='12' column='1'/>
+        <parameter type-id='type-id-8' name='c' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='12' column='1'/>
         <parameter is-variadic='yes'/>
         <!-- void -->
-        <return type-id='type-id-7'/>
+        <return type-id='type-id-15'/>
       </function-decl>
       <!-- void ns0::baz(int&) -->
       <function-decl name='baz' mangled-name='_ZN3ns03bazERi' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='16' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN3ns03bazERi'>
         <!-- parameter of type 'int&' -->
-        <parameter type-id='type-id-12' name='c' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='16' column='1'/>
+        <parameter type-id='type-id-10' name='c' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='16' column='1'/>
         <!-- void -->
-        <return type-id='type-id-7'/>
+        <return type-id='type-id-15'/>
       </function-decl>
       <!-- void ns0::bar2(ns0::E&) -->
       <function-decl name='bar2' mangled-name='_ZN3ns04bar2ERNS_1EE' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='22' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN3ns04bar2ERNS_1EE'>
         <!-- parameter of type 'ns0::E&' -->
-        <parameter type-id='type-id-14' name='e' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='22' column='1'/>
+        <parameter type-id='type-id-12' name='e' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='22' column='1'/>
         <!-- void -->
-        <return type-id='type-id-7'/>
+        <return type-id='type-id-15'/>
       </function-decl>
       <!-- ns0::long_long ns0::baz2(int&) -->
       <function-decl name='baz2' mangled-name='_ZN3ns04baz2ERi' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='28' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN3ns04baz2ERi'>
         <!-- parameter of type 'int&' -->
-        <parameter type-id='type-id-12' name='c' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='28' column='1'/>
+        <parameter type-id='type-id-10' name='c' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='28' column='1'/>
         <!-- typedef ns0::long_long -->
-        <return type-id='type-id-17'/>
+        <return type-id='type-id-14'/>
       </function-decl>
       <!-- long int ns0::foo(char*, volatile const long int) -->
       <function-decl name='foo' mangled-name='_ZN3ns03fooEPcl' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='45' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN3ns03fooEPcl'>
         <!-- parameter of type 'char*' -->
-        <parameter type-id='type-id-8' name='c' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='45' column='1'/>
+        <parameter type-id='type-id-7' name='c' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='45' column='1'/>
         <!-- parameter of type 'volatile const long int' -->
-        <parameter type-id='type-id-16' name='l' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='45' column='1'/>
+        <parameter type-id='type-id-13' name='l' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='45' column='1'/>
         <!-- long int -->
         <return type-id='type-id-3'/>
       </function-decl>
@@ -120,7 +116,7 @@
       <!-- int -->
       <return type-id='type-id-2'/>
     </function-decl>
-    <!-- int global -->
-    <var-decl name='global' type-id='type-id-2' mangled-name='global' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test0.cc' line='3' column='1' elf-symbol-id='global'/>
+    <!-- void -->
+    <type-decl name='void' id='type-id-15'/>
   </abi-instr>
 </abi-corpus>
diff --git a/tests/data/test-annotate/test1.abi b/tests/data/test-annotate/test1.abi
index 8562fa7..c64a6d7 100644
--- a/tests/data/test-annotate/test1.abi
+++ b/tests/data/test-annotate/test1.abi
@@ -1,4 +1,4 @@
-<abi-corpus version='2.0' architecture='elf-amd-x86_64'>
+<abi-corpus version='2.1' architecture='elf-amd-x86_64'>
   <elf-needed>
     <dependency name='libstdc++.so.6'/>
     <dependency name='libm.so.6'/>
@@ -70,10 +70,8 @@
     <type-decl name='long long int' size-in-bits='64' id='type-id-4'/>
     <!-- unsigned char -->
     <type-decl name='unsigned char' size-in-bits='8' id='type-id-5'/>
-    <!-- void -->
-    <type-decl name='void' id='type-id-6'/>
     <!-- struct b0 -->
-    <class-decl name='b0' size-in-bits='128' is-struct='yes' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='1' column='1' id='type-id-7'>
+    <class-decl name='b0' size-in-bits='128' is-struct='yes' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='1' column='1' id='type-id-6'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- long long int b0::m0 -->
         <var-decl name='m0' type-id='type-id-4' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='3' column='1'/>
@@ -84,7 +82,7 @@
       </data-member>
     </class-decl>
     <!-- struct b1 -->
-    <class-decl name='b1' size-in-bits='128' is-struct='yes' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='7' column='1' id='type-id-8'>
+    <class-decl name='b1' size-in-bits='128' is-struct='yes' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='7' column='1' id='type-id-7'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- double b1::m0 -->
         <var-decl name='m0' type-id='type-id-2' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='9' column='1'/>
@@ -95,112 +93,110 @@
       </data-member>
     </class-decl>
     <!-- struct s0 -->
-    <class-decl name='s0' size-in-bits='384' is-struct='yes' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='13' column='1' id='type-id-9'>
+    <class-decl name='s0' size-in-bits='384' is-struct='yes' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='13' column='1' id='type-id-8'>
       <!-- struct b0 -->
-      <base-class access='public' layout-offset-in-bits='192' is-virtual='yes' type-id='type-id-7'/>
+      <base-class access='public' layout-offset-in-bits='192' is-virtual='yes' type-id='type-id-6'/>
       <!-- struct b1 -->
-      <base-class access='public' layout-offset-in-bits='256' is-virtual='yes' type-id='type-id-8'/>
+      <base-class access='public' layout-offset-in-bits='256' is-virtual='yes' type-id='type-id-7'/>
       <member-type access='public'>
         <!-- typedef int s0::integer -->
-        <typedef-decl name='integer' type-id='type-id-3' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='15' column='1' id='type-id-10'/>
+        <typedef-decl name='integer' type-id='type-id-3' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='15' column='1' id='type-id-9'/>
       </member-type>
       <member-type access='public'>
         <!-- typedef unsigned char s0::byte -->
-        <typedef-decl name='byte' type-id='type-id-5' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='16' column='1' id='type-id-11'/>
+        <typedef-decl name='byte' type-id='type-id-5' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='16' column='1' id='type-id-10'/>
       </member-type>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- s0::integer s0::m0 -->
-        <var-decl name='m0' type-id='type-id-10' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='18' column='1'/>
+        <var-decl name='m0' type-id='type-id-9' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='18' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='96'>
         <!-- s0::byte s0::m1 -->
-        <var-decl name='m1' type-id='type-id-11' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='19' column='1'/>
+        <var-decl name='m1' type-id='type-id-10' visibility='default' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='19' column='1'/>
       </data-member>
       <member-function access='public' constructor='yes'>
         <!-- s0::s0(int, void**) -->
         <function-decl name='s0' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='21' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 's0*' -->
-          <parameter type-id='type-id-12' is-artificial='yes'/>
+          <parameter type-id='type-id-11' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
           <parameter type-id='type-id-3' is-artificial='yes'/>
           <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-13' is-artificial='yes'/>
+          <parameter type-id='type-id-12' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-6'/>
+          <return type-id='type-id-13'/>
         </function-decl>
       </member-function>
       <member-function access='public' destructor='yes'>
         <!-- s0::~s0(int, void**) -->
         <function-decl name='~s0' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='27' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 's0*' -->
-          <parameter type-id='type-id-12' is-artificial='yes'/>
+          <parameter type-id='type-id-11' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
           <parameter type-id='type-id-3' is-artificial='yes'/>
           <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-13' is-artificial='yes'/>
+          <parameter type-id='type-id-12' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-6'/>
+          <return type-id='type-id-13'/>
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
         <!-- s0::s0(int, void**) -->
         <function-decl name='s0' mangled-name='_ZN2s0C1Ev' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='21' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN2s0C1Ev'>
           <!-- implicit parameter of type 's0*' -->
-          <parameter type-id='type-id-12' is-artificial='yes'/>
+          <parameter type-id='type-id-11' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
           <parameter type-id='type-id-3' is-artificial='yes'/>
           <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-13' is-artificial='yes'/>
+          <parameter type-id='type-id-12' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-6'/>
+          <return type-id='type-id-13'/>
         </function-decl>
       </member-function>
       <member-function access='public' destructor='yes'>
         <!-- s0::~s0(int, void**) -->
         <function-decl name='~s0' mangled-name='_ZN2s0D1Ev' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='27' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN2s0D1Ev'>
           <!-- implicit parameter of type 's0*' -->
-          <parameter type-id='type-id-12' is-artificial='yes'/>
+          <parameter type-id='type-id-11' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
           <parameter type-id='type-id-3' is-artificial='yes'/>
           <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-13' is-artificial='yes'/>
+          <parameter type-id='type-id-12' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-6'/>
+          <return type-id='type-id-13'/>
         </function-decl>
       </member-function>
       <member-function access='public'>
         <!-- s0::integer s0::mem_fun() -->
         <function-decl name='mem_fun' mangled-name='_ZN2s07mem_funEv' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='36' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN2s07mem_funEv'>
-          <!-- implicit parameter of type 's0* const' -->
-          <parameter type-id='type-id-14' name='this' is-artificial='yes'/>
+          <!-- implicit parameter of type 's0*' -->
+          <parameter type-id='type-id-11' is-artificial='yes'/>
           <!-- typedef s0::integer -->
-          <return type-id='type-id-10'/>
+          <return type-id='type-id-9'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- s0& -->
-    <qualified-type-def type-id='type-id-15' id='type-id-16'/>
-    <!-- s0& -->
-    <reference-type-def kind='lvalue' type-id='type-id-9' size-in-bits='64' id='type-id-15'/>
+    <reference-type-def kind='lvalue' type-id='type-id-8' size-in-bits='64' id='type-id-14'/>
     <!-- s0* -->
-    <pointer-type-def type-id='type-id-9' size-in-bits='64' id='type-id-12'/>
-    <!-- s0* const -->
-    <qualified-type-def type-id='type-id-12' const='yes' id='type-id-14'/>
+    <pointer-type-def type-id='type-id-8' size-in-bits='64' id='type-id-11'/>
     <!-- void* -->
-    <pointer-type-def type-id='type-id-6' size-in-bits='64' id='type-id-17'/>
+    <pointer-type-def type-id='type-id-13' size-in-bits='64' id='type-id-15'/>
     <!-- void** -->
-    <pointer-type-def type-id='type-id-17' size-in-bits='64' id='type-id-13'/>
+    <pointer-type-def type-id='type-id-15' size-in-bits='64' id='type-id-12'/>
     <!-- void foo(s0&) -->
     <function-decl name='foo' mangled-name='_Z3fooR2s0' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='42' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3fooR2s0'>
       <!-- parameter of type 's0&' -->
-      <parameter type-id='type-id-16' name='s' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='42' column='1'/>
+      <parameter type-id='type-id-14' name='s' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='42' column='1'/>
       <!-- void -->
-      <return type-id='type-id-6'/>
+      <return type-id='type-id-13'/>
     </function-decl>
     <!-- int main() -->
     <function-decl name='main' mangled-name='main' filepath='/home/dodji/git/libabigail/dwarf/tests/data/test-read-dwarf/test1.cc' line='48' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='main'>
       <!-- int -->
       <return type-id='type-id-3'/>
     </function-decl>
+    <!-- void -->
+    <type-decl name='void' id='type-id-13'/>
   </abi-instr>
 </abi-corpus>
diff --git a/tests/data/test-annotate/test13-pr18894.so.abi b/tests/data/test-annotate/test13-pr18894.so.abi
index 45026ed..1429218 100644
--- a/tests/data/test-annotate/test13-pr18894.so.abi
+++ b/tests/data/test-annotate/test13-pr18894.so.abi
@@ -1,4 +1,4 @@
-<abi-corpus version='2.0' architecture='elf-amd-x86_64' soname='libdbus-1.so.3'>
+<abi-corpus version='2.1' architecture='elf-amd-x86_64' soname='libdbus-1.so.3'>
   <elf-needed>
     <dependency name='librt.so.1'/>
     <dependency name='libpthread.so.0'/>
@@ -481,32 +481,52 @@
     <type-decl name='int' size-in-bits='32' id='type-id-2'/>
     <!-- unsigned int -->
     <type-decl name='unsigned int' size-in-bits='32' id='type-id-3'/>
-    <!-- void -->
-    <type-decl name='void' id='type-id-4'/>
-    <!-- typedef DBusAddressEntry DBusAddressEntry -->
-    <typedef-decl name='DBusAddressEntry' type-id='type-id-5' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.h' line='41' column='1' id='type-id-6'/>
-    <!-- struct DBusAddressEntry -->
-    <class-decl name='DBusAddressEntry' size-in-bits='320' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='44' column='1' id='type-id-5'>
+    <!-- typedef unsigned int dbus_uint32_t -->
+    <typedef-decl name='dbus_uint32_t' type-id='type-id-3' filepath='../dbus/dbus-arch-deps.h' line='43' column='1' id='type-id-4'/>
+    <!-- typedef DBusError DBusError -->
+    <typedef-decl name='DBusError' type-id='type-id-5' filepath='../dbus/dbus-errors.h' line='43' column='1' id='type-id-6'/>
+    <!-- struct DBusError -->
+    <class-decl name='DBusError' size-in-bits='256' is-struct='yes' visibility='default' filepath='../dbus/dbus-errors.h' line='49' column='1' id='type-id-5'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- DBusString DBusAddressEntry::method -->
-        <var-decl name='method' type-id='type-id-7' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='45' column='1'/>
+        <!-- const char* DBusError::name -->
+        <var-decl name='name' type-id='type-id-7' visibility='default' filepath='../dbus/dbus-errors.h' line='50' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- const char* DBusError::message -->
+        <var-decl name='message' type-id='type-id-7' visibility='default' filepath='../dbus/dbus-errors.h' line='51' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- unsigned int DBusError::dummy1 -->
+        <var-decl name='dummy1' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-errors.h' line='53' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='129'>
+        <!-- unsigned int DBusError::dummy2 -->
+        <var-decl name='dummy2' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-errors.h' line='54' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='130'>
+        <!-- unsigned int DBusError::dummy3 -->
+        <var-decl name='dummy3' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-errors.h' line='55' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='131'>
+        <!-- unsigned int DBusError::dummy4 -->
+        <var-decl name='dummy4' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-errors.h' line='56' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='132'>
+        <!-- unsigned int DBusError::dummy5 -->
+        <var-decl name='dummy5' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-errors.h' line='57' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
-        <!-- DBusList* DBusAddressEntry::keys -->
-        <var-decl name='keys' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='47' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- DBusList* DBusAddressEntry::values -->
-        <var-decl name='values' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='48' column='1'/>
+        <!-- void* DBusError::padding1 -->
+        <var-decl name='padding1' type-id='type-id-8' visibility='default' filepath='../dbus/dbus-errors.h' line='59' column='1'/>
       </data-member>
     </class-decl>
     <!-- typedef DBusString DBusString -->
-    <typedef-decl name='DBusString' type-id='type-id-9' filepath='../dbus/dbus-string.h' line='40' column='1' id='type-id-7'/>
+    <typedef-decl name='DBusString' type-id='type-id-9' filepath='../dbus/dbus-string.h' line='40' column='1' id='type-id-10'/>
     <!-- struct DBusString -->
     <class-decl name='DBusString' size-in-bits='192' is-struct='yes' visibility='default' filepath='../dbus/dbus-string.h' line='43' column='1' id='type-id-9'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- void* DBusString::dummy1 -->
-        <var-decl name='dummy1' type-id='type-id-10' visibility='default' filepath='../dbus/dbus-string.h' line='47' column='1'/>
+        <var-decl name='dummy1' type-id='type-id-8' visibility='default' filepath='../dbus/dbus-string.h' line='47' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- int DBusString::dummy2 -->
@@ -516,196 +536,195 @@
         <!-- int DBusString::dummy3 -->
         <var-decl name='dummy3' type-id='type-id-2' visibility='default' filepath='../dbus/dbus-string.h' line='50' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
+      <data-member access='public' layout-offset-in-bits='128'>
         <!-- unsigned int DBusString::dummy_bit1 -->
         <var-decl name='dummy_bit1' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-string.h' line='51' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='1'>
+      <data-member access='public' layout-offset-in-bits='129'>
         <!-- unsigned int DBusString::dummy_bit2 -->
         <var-decl name='dummy_bit2' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-string.h' line='52' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='2'>
+      <data-member access='public' layout-offset-in-bits='130'>
         <!-- unsigned int DBusString::dummy_bit3 -->
         <var-decl name='dummy_bit3' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-string.h' line='53' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='3'>
+      <data-member access='public' layout-offset-in-bits='131'>
         <!-- unsigned int DBusString::dummy_bits -->
         <var-decl name='dummy_bits' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-string.h' line='54' column='1'/>
       </data-member>
     </class-decl>
+    <!-- typedef DBusList DBusList -->
+    <typedef-decl name='DBusList' type-id='type-id-11' filepath='../dbus/dbus-sysdeps.h' line='74' column='1' id='type-id-12'/>
+    <!-- typedef dbus_uint32_t dbus_bool_t -->
+    <typedef-decl name='dbus_bool_t' type-id='type-id-4' filepath='../dbus/dbus-types.h' line='35' column='1' id='type-id-13'/>
+    <!-- struct DBusAddressEntry -->
+    <class-decl name='DBusAddressEntry' size-in-bits='320' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='44' column='1' id='type-id-14'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- DBusString DBusAddressEntry::method -->
+        <var-decl name='method' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='45' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- DBusList* DBusAddressEntry::keys -->
+        <var-decl name='keys' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='47' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- DBusList* DBusAddressEntry::values -->
+        <var-decl name='values' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='48' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef DBusAddressEntry DBusAddressEntry -->
+    <typedef-decl name='DBusAddressEntry' type-id='type-id-14' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.h' line='41' column='1' id='type-id-16'/>
     <!-- struct DBusList -->
     <class-decl name='DBusList' size-in-bits='192' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-list.h' line='35' column='1' id='type-id-11'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- DBusList* DBusList::prev -->
-        <var-decl name='prev' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-list.h' line='36' column='1'/>
+        <var-decl name='prev' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-list.h' line='36' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- DBusList* DBusList::next -->
-        <var-decl name='next' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-list.h' line='37' column='1'/>
+        <var-decl name='next' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-list.h' line='37' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- void* DBusList::data -->
-        <var-decl name='data' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-list.h' line='38' column='1'/>
+        <var-decl name='data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-list.h' line='38' column='1'/>
       </data-member>
     </class-decl>
-    <!-- typedef DBusList DBusList -->
-    <typedef-decl name='DBusList' type-id='type-id-11' filepath='../dbus/dbus-sysdeps.h' line='74' column='1' id='type-id-12'/>
-    <!-- typedef DBusError DBusError -->
-    <typedef-decl name='DBusError' type-id='type-id-13' filepath='../dbus/dbus-errors.h' line='43' column='1' id='type-id-14'/>
-    <!-- struct DBusError -->
-    <class-decl name='DBusError' size-in-bits='256' is-struct='yes' visibility='default' filepath='../dbus/dbus-errors.h' line='49' column='1' id='type-id-13'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- const char* DBusError::name -->
-        <var-decl name='name' type-id='type-id-15' visibility='default' filepath='../dbus/dbus-errors.h' line='50' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- const char* DBusError::message -->
-        <var-decl name='message' type-id='type-id-15' visibility='default' filepath='../dbus/dbus-errors.h' line='51' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- unsigned int DBusError::dummy1 -->
-        <var-decl name='dummy1' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-errors.h' line='53' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1'>
-        <!-- unsigned int DBusError::dummy2 -->
-        <var-decl name='dummy2' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-errors.h' line='54' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='2'>
-        <!-- unsigned int DBusError::dummy3 -->
-        <var-decl name='dummy3' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-errors.h' line='55' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='3'>
-        <!-- unsigned int DBusError::dummy4 -->
-        <var-decl name='dummy4' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-errors.h' line='56' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='4'>
-        <!-- unsigned int DBusError::dummy5 -->
-        <var-decl name='dummy5' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-errors.h' line='57' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- void* DBusError::padding1 -->
-        <var-decl name='padding1' type-id='type-id-10' visibility='default' filepath='../dbus/dbus-errors.h' line='59' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef dbus_uint32_t dbus_bool_t -->
-    <typedef-decl name='dbus_bool_t' type-id='type-id-16' filepath='../dbus/dbus-types.h' line='35' column='1' id='type-id-17'/>
-    <!-- typedef unsigned int dbus_uint32_t -->
-    <typedef-decl name='dbus_uint32_t' type-id='type-id-3' filepath='../dbus/dbus-arch-deps.h' line='43' column='1' id='type-id-16'/>
     <!-- DBusAddressEntry* -->
-    <pointer-type-def type-id='type-id-6' size-in-bits='64' id='type-id-18'/>
+    <pointer-type-def type-id='type-id-16' size-in-bits='64' id='type-id-17'/>
     <!-- DBusAddressEntry** -->
-    <pointer-type-def type-id='type-id-18' size-in-bits='64' id='type-id-19'/>
+    <pointer-type-def type-id='type-id-17' size-in-bits='64' id='type-id-18'/>
     <!-- DBusAddressEntry*** -->
-    <pointer-type-def type-id='type-id-19' size-in-bits='64' id='type-id-20'/>
+    <pointer-type-def type-id='type-id-18' size-in-bits='64' id='type-id-19'/>
     <!-- DBusError* -->
-    <pointer-type-def type-id='type-id-14' size-in-bits='64' id='type-id-21'/>
+    <pointer-type-def type-id='type-id-6' size-in-bits='64' id='type-id-20'/>
     <!-- DBusList* -->
-    <pointer-type-def type-id='type-id-12' size-in-bits='64' id='type-id-8'/>
+    <pointer-type-def type-id='type-id-12' size-in-bits='64' id='type-id-15'/>
     <!-- char* -->
-    <pointer-type-def type-id='type-id-1' size-in-bits='64' id='type-id-22'/>
+    <pointer-type-def type-id='type-id-1' size-in-bits='64' id='type-id-21'/>
     <!-- const char -->
-    <qualified-type-def type-id='type-id-1' const='yes' id='type-id-23'/>
+    <qualified-type-def type-id='type-id-1' const='yes' id='type-id-22'/>
     <!-- const char* -->
-    <pointer-type-def type-id='type-id-23' size-in-bits='64' id='type-id-15'/>
+    <pointer-type-def type-id='type-id-22' size-in-bits='64' id='type-id-7'/>
     <!-- int* -->
-    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-24'/>
+    <pointer-type-def type-id='type-id-2' size-in-bits='64' id='type-id-23'/>
     <!-- void* -->
-    <pointer-type-def type-id='type-id-4' size-in-bits='64' id='type-id-10'/>
-    <!-- const char* dbus_address_entry_get_method(DBusAddressEntry*) -->
-    <function-decl name='dbus_address_entry_get_method' mangled-name='dbus_address_entry_get_method' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='227' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_address_entry_get_method'>
-      <!-- parameter of type 'DBusAddressEntry*' -->
-      <parameter type-id='type-id-18' name='entry' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='227' column='1'/>
-      <!-- const char* -->
-      <return type-id='type-id-15'/>
-    </function-decl>
-    <!-- char* dbus_address_unescape_value(const char*, DBusError*) -->
-    <function-decl name='dbus_address_unescape_value' mangled-name='dbus_address_unescape_value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='617' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_address_unescape_value'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='617' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='618' column='1'/>
-      <!-- char* -->
-      <return type-id='type-id-22'/>
-    </function-decl>
+    <pointer-type-def type-id='type-id-24' size-in-bits='64' id='type-id-8'/>
     <!-- void dbus_address_entries_free(DBusAddressEntry**) -->
     <function-decl name='dbus_address_entries_free' mangled-name='dbus_address_entries_free' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='189' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_address_entries_free'>
       <!-- parameter of type 'DBusAddressEntry**' -->
-      <parameter type-id='type-id-19' name='entries' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='189' column='1'/>
+      <parameter type-id='type-id-18' name='entries' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='189' column='1'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-decl>
-    <!-- dbus_bool_t dbus_parse_address(const char*, DBusAddressEntry***, int*, DBusError*) -->
-    <function-decl name='dbus_parse_address' mangled-name='dbus_parse_address' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='363' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_parse_address'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='address' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='363' column='1'/>
-      <!-- parameter of type 'DBusAddressEntry***' -->
-      <parameter type-id='type-id-20' name='entry' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='364' column='1'/>
-      <!-- parameter of type 'int*' -->
-      <parameter type-id='type-id-24' name='array_len' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='365' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='366' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+    <!-- const char* dbus_address_entry_get_method(DBusAddressEntry*) -->
+    <function-decl name='dbus_address_entry_get_method' mangled-name='dbus_address_entry_get_method' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='227' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_address_entry_get_method'>
+      <!-- parameter of type 'DBusAddressEntry*' -->
+      <parameter type-id='type-id-17' name='entry' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='227' column='1'/>
+      <!-- const char* -->
+      <return type-id='type-id-7'/>
     </function-decl>
     <!-- const char* dbus_address_entry_get_value(DBusAddressEntry*, const char*) -->
     <function-decl name='dbus_address_entry_get_value' mangled-name='dbus_address_entry_get_value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='244' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_address_entry_get_value'>
       <!-- parameter of type 'DBusAddressEntry*' -->
-      <parameter type-id='type-id-18' name='entry' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='244' column='1'/>
+      <parameter type-id='type-id-17' name='entry' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='244' column='1'/>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='key' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='245' column='1'/>
+      <parameter type-id='type-id-7' name='key' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='245' column='1'/>
       <!-- const char* -->
-      <return type-id='type-id-15'/>
+      <return type-id='type-id-7'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_parse_address(const char*, DBusAddressEntry***, int*, DBusError*) -->
+    <function-decl name='dbus_parse_address' mangled-name='dbus_parse_address' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='363' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_parse_address'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='address' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='363' column='1'/>
+      <!-- parameter of type 'DBusAddressEntry***' -->
+      <parameter type-id='type-id-19' name='entry' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='364' column='1'/>
+      <!-- parameter of type 'int*' -->
+      <parameter type-id='type-id-23' name='array_len' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='365' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='366' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
     </function-decl>
     <!-- char* dbus_address_escape_value(const char*) -->
     <function-decl name='dbus_address_escape_value' mangled-name='dbus_address_escape_value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='583' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_address_escape_value'>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='583' column='1'/>
+      <parameter type-id='type-id-7' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='583' column='1'/>
       <!-- char* -->
-      <return type-id='type-id-22'/>
+      <return type-id='type-id-21'/>
     </function-decl>
+    <!-- char* dbus_address_unescape_value(const char*, DBusError*) -->
+    <function-decl name='dbus_address_unescape_value' mangled-name='dbus_address_unescape_value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='617' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_address_unescape_value'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='617' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-address.c' line='618' column='1'/>
+      <!-- char* -->
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <!-- void -->
+    <type-decl name='void' id='type-id-24'/>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-bus.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
+    <!-- unnamed&#45;enum&#45;underlying&#45;type&#45;32 -->
+    <type-decl name='unnamed-enum-underlying-type-32' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='type-id-25'/>
+    <!-- unsigned long int -->
+    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-26'/>
+    <!-- typedef DBusConnection DBusConnection -->
+    <typedef-decl name='DBusConnection' type-id='type-id-27' filepath='../dbus/dbus-connection.h' line='51' column='1' id='type-id-28'/>
+    <!-- enum DBusBusType -->
+    <enum-decl name='DBusBusType' naming-typedef-id='type-id-29' filepath='../dbus/dbus-shared.h' line='57' column='1' id='type-id-30'>
+      <underlying-type type-id='type-id-25'/>
+      <enumerator name='DBUS_BUS_SESSION' value='0'/>
+      <enumerator name='DBUS_BUS_SYSTEM' value='1'/>
+      <enumerator name='DBUS_BUS_STARTER' value='2'/>
+    </enum-decl>
+    <!-- typedef DBusBusType DBusBusType -->
+    <typedef-decl name='DBusBusType' type-id='type-id-30' filepath='../dbus/dbus-shared.h' line='61' column='1' id='type-id-29'/>
+    <!-- DBusConnection* -->
+    <pointer-type-def type-id='type-id-28' size-in-bits='64' id='type-id-31'/>
+    <!-- dbus_uint32_t* -->
+    <pointer-type-def type-id='type-id-4' size-in-bits='64' id='type-id-32'/>
     <!-- struct DBusConnection -->
-    <class-decl name='DBusConnection' size-in-bits='2112' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='257' column='1' id='type-id-25'>
+    <class-decl name='DBusConnection' size-in-bits='2112' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='257' column='1' id='type-id-27'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- DBusAtomic DBusConnection::refcount -->
-        <var-decl name='refcount' type-id='type-id-26' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='258' column='1'/>
+        <var-decl name='refcount' type-id='type-id-33' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='258' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- DBusRMutex* DBusConnection::mutex -->
-        <var-decl name='mutex' type-id='type-id-27' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='260' column='1'/>
+        <var-decl name='mutex' type-id='type-id-34' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='260' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- DBusCMutex* DBusConnection::dispatch_mutex -->
-        <var-decl name='dispatch_mutex' type-id='type-id-28' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='262' column='1'/>
+        <var-decl name='dispatch_mutex' type-id='type-id-35' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='262' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- DBusCondVar* DBusConnection::dispatch_cond -->
-        <var-decl name='dispatch_cond' type-id='type-id-29' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='263' column='1'/>
+        <var-decl name='dispatch_cond' type-id='type-id-36' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='263' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- DBusCMutex* DBusConnection::io_path_mutex -->
-        <var-decl name='io_path_mutex' type-id='type-id-28' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='264' column='1'/>
+        <var-decl name='io_path_mutex' type-id='type-id-35' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='264' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- DBusCondVar* DBusConnection::io_path_cond -->
-        <var-decl name='io_path_cond' type-id='type-id-29' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='265' column='1'/>
+        <var-decl name='io_path_cond' type-id='type-id-36' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='265' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='384'>
         <!-- DBusList* DBusConnection::outgoing_messages -->
-        <var-decl name='outgoing_messages' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='267' column='1'/>
+        <var-decl name='outgoing_messages' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='267' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='448'>
         <!-- DBusList* DBusConnection::incoming_messages -->
-        <var-decl name='incoming_messages' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='268' column='1'/>
+        <var-decl name='incoming_messages' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='268' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='512'>
         <!-- DBusList* DBusConnection::expired_messages -->
-        <var-decl name='expired_messages' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='269' column='1'/>
+        <var-decl name='expired_messages' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='269' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='576'>
         <!-- DBusMessage* DBusConnection::message_borrowed -->
-        <var-decl name='message_borrowed' type-id='type-id-30' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='271' column='1'/>
+        <var-decl name='message_borrowed' type-id='type-id-37' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='271' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='640'>
         <!-- int DBusConnection::n_outgoing -->
@@ -717,109 +736,109 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='704'>
         <!-- DBusCounter* DBusConnection::outgoing_counter -->
-        <var-decl name='outgoing_counter' type-id='type-id-31' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='278' column='1'/>
+        <var-decl name='outgoing_counter' type-id='type-id-38' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='278' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='768'>
         <!-- DBusTransport* DBusConnection::transport -->
-        <var-decl name='transport' type-id='type-id-32' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='280' column='1'/>
+        <var-decl name='transport' type-id='type-id-39' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='280' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='832'>
         <!-- DBusWatchList* DBusConnection::watches -->
-        <var-decl name='watches' type-id='type-id-33' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='281' column='1'/>
+        <var-decl name='watches' type-id='type-id-40' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='281' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='896'>
         <!-- DBusTimeoutList* DBusConnection::timeouts -->
-        <var-decl name='timeouts' type-id='type-id-34' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='282' column='1'/>
+        <var-decl name='timeouts' type-id='type-id-41' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='282' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='960'>
         <!-- DBusList* DBusConnection::filter_list -->
-        <var-decl name='filter_list' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='284' column='1'/>
+        <var-decl name='filter_list' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='284' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1024'>
         <!-- DBusRMutex* DBusConnection::slot_mutex -->
-        <var-decl name='slot_mutex' type-id='type-id-27' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='286' column='1'/>
+        <var-decl name='slot_mutex' type-id='type-id-34' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='286' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1088'>
         <!-- DBusDataSlotList DBusConnection::slot_list -->
-        <var-decl name='slot_list' type-id='type-id-35' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='287' column='1'/>
+        <var-decl name='slot_list' type-id='type-id-42' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='287' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1216'>
         <!-- DBusHashTable* DBusConnection::pending_replies -->
-        <var-decl name='pending_replies' type-id='type-id-36' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='289' column='1'/>
+        <var-decl name='pending_replies' type-id='type-id-43' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='289' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1280'>
         <!-- dbus_uint32_t DBusConnection::client_serial -->
-        <var-decl name='client_serial' type-id='type-id-16' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='291' column='1'/>
+        <var-decl name='client_serial' type-id='type-id-4' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='291' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1344'>
         <!-- DBusList* DBusConnection::disconnect_message_link -->
-        <var-decl name='disconnect_message_link' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='292' column='1'/>
+        <var-decl name='disconnect_message_link' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='292' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1408'>
         <!-- DBusWakeupMainFunction DBusConnection::wakeup_main_function -->
-        <var-decl name='wakeup_main_function' type-id='type-id-37' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='294' column='1'/>
+        <var-decl name='wakeup_main_function' type-id='type-id-44' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='294' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1472'>
         <!-- void* DBusConnection::wakeup_main_data -->
-        <var-decl name='wakeup_main_data' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='295' column='1'/>
+        <var-decl name='wakeup_main_data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='295' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1536'>
         <!-- DBusFreeFunction DBusConnection::free_wakeup_main_data -->
-        <var-decl name='free_wakeup_main_data' type-id='type-id-38' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='296' column='1'/>
+        <var-decl name='free_wakeup_main_data' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='296' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1600'>
         <!-- DBusDispatchStatusFunction DBusConnection::dispatch_status_function -->
-        <var-decl name='dispatch_status_function' type-id='type-id-39' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='298' column='1'/>
+        <var-decl name='dispatch_status_function' type-id='type-id-46' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='298' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1664'>
         <!-- void* DBusConnection::dispatch_status_data -->
-        <var-decl name='dispatch_status_data' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='299' column='1'/>
+        <var-decl name='dispatch_status_data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='299' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1728'>
         <!-- DBusFreeFunction DBusConnection::free_dispatch_status_data -->
-        <var-decl name='free_dispatch_status_data' type-id='type-id-38' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='300' column='1'/>
+        <var-decl name='free_dispatch_status_data' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='300' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1792'>
         <!-- DBusDispatchStatus DBusConnection::last_dispatch_status -->
-        <var-decl name='last_dispatch_status' type-id='type-id-40' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='302' column='1'/>
+        <var-decl name='last_dispatch_status' type-id='type-id-47' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='302' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1856'>
         <!-- DBusObjectTree* DBusConnection::objects -->
-        <var-decl name='objects' type-id='type-id-41' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='304' column='1'/>
+        <var-decl name='objects' type-id='type-id-48' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='304' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1920'>
         <!-- char* DBusConnection::server_guid -->
-        <var-decl name='server_guid' type-id='type-id-22' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='306' column='1'/>
+        <var-decl name='server_guid' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='306' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1984'>
         <!-- dbus_bool_t DBusConnection::dispatch_acquired -->
-        <var-decl name='dispatch_acquired' type-id='type-id-17' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='312' column='1'/>
+        <var-decl name='dispatch_acquired' type-id='type-id-13' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='312' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='2016'>
         <!-- dbus_bool_t DBusConnection::io_path_acquired -->
-        <var-decl name='io_path_acquired' type-id='type-id-17' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='313' column='1'/>
+        <var-decl name='io_path_acquired' type-id='type-id-13' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='313' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
+      <data-member access='public' layout-offset-in-bits='2048'>
         <!-- unsigned int DBusConnection::shareable -->
         <var-decl name='shareable' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='315' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='1'>
+      <data-member access='public' layout-offset-in-bits='2049'>
         <!-- unsigned int DBusConnection::exit_on_disconnect -->
         <var-decl name='exit_on_disconnect' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='317' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='2'>
+      <data-member access='public' layout-offset-in-bits='2050'>
         <!-- unsigned int DBusConnection::route_peer_messages -->
         <var-decl name='route_peer_messages' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='319' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='3'>
+      <data-member access='public' layout-offset-in-bits='2051'>
         <!-- unsigned int DBusConnection::disconnected_message_arrived -->
         <var-decl name='disconnected_message_arrived' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='321' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='4'>
+      <data-member access='public' layout-offset-in-bits='2052'>
         <!-- unsigned int DBusConnection::disconnected_message_processed -->
         <var-decl name='disconnected_message_processed' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='325' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='5'>
+      <data-member access='public' layout-offset-in-bits='2053'>
         <!-- unsigned int DBusConnection::have_connection_lock -->
         <var-decl name='have_connection_lock' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='330' column='1'/>
       </data-member>
@@ -828,288 +847,518 @@
         <var-decl name='generation' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='334' column='1'/>
       </data-member>
     </class-decl>
-    <!-- unnamed&#45;enum&#45;underlying&#45;type&#45;32 -->
-    <type-decl name='unnamed-enum-underlying-type-32' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='type-id-42'/>
-    <!-- unsigned long int -->
-    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-43'/>
-    <!-- typedef DBusConnection DBusConnection -->
-    <typedef-decl name='DBusConnection' type-id='type-id-25' filepath='../dbus/dbus-connection.h' line='51' column='1' id='type-id-44'/>
-    <!-- typedef __anonymous_enum__ DBusBusType -->
-    <typedef-decl name='DBusBusType' type-id='type-id-45' filepath='../dbus/dbus-shared.h' line='61' column='1' id='type-id-46'/>
-    <!-- enum __anonymous_enum__ -->
-    <enum-decl name='__anonymous_enum__' is-anonymous='yes' filepath='../dbus/dbus-shared.h' line='57' column='1' id='type-id-45'>
-      <underlying-type type-id='type-id-42'/>
-      <enumerator name='DBUS_BUS_SESSION' value='0'/>
-      <enumerator name='DBUS_BUS_SYSTEM' value='1'/>
-      <enumerator name='DBUS_BUS_STARTER' value='2'/>
-    </enum-decl>
-    <!-- DBusConnection* -->
-    <pointer-type-def type-id='type-id-44' size-in-bits='64' id='type-id-47'/>
-    <!-- dbus_uint32_t* -->
-    <pointer-type-def type-id='type-id-16' size-in-bits='64' id='type-id-48'/>
-    <!-- void dbus_bus_remove_match(DBusConnection*, const char*, DBusError*) -->
-    <function-decl name='dbus_bus_remove_match' mangled-name='dbus_bus_remove_match' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1576' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_remove_match'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1576' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='rule' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1577' column='1'/>
+    <!-- DBusConnection* dbus_bus_get(DBusBusType, DBusError*) -->
+    <function-decl name='dbus_bus_get' mangled-name='dbus_bus_get' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='558' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_get'>
+      <!-- parameter of type 'typedef DBusBusType' -->
+      <parameter type-id='type-id-29' name='type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='558' column='1'/>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1578' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void dbus_bus_add_match(DBusConnection*, const char*, DBusError*) -->
-    <function-decl name='dbus_bus_add_match' mangled-name='dbus_bus_add_match' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1526' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_add_match'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1526' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='rule' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1527' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1528' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_bus_start_service_by_name(DBusConnection*, const char*, dbus_uint32_t, dbus_uint32_t*, DBusError*) -->
-    <function-decl name='dbus_bus_start_service_by_name' mangled-name='dbus_bus_start_service_by_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1356' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_start_service_by_name'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1356' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1357' column='1'/>
-      <!-- parameter of type 'typedef dbus_uint32_t' -->
-      <parameter type-id='type-id-16' name='flags' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1358' column='1'/>
-      <!-- parameter of type 'dbus_uint32_t*' -->
-      <parameter type-id='type-id-48' name='result' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1359' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1360' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_bus_name_has_owner(DBusConnection*, const char*, DBusError*) -->
-    <function-decl name='dbus_bus_name_has_owner' mangled-name='dbus_bus_name_has_owner' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1280' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_name_has_owner'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1280' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1281' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1282' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- int dbus_bus_release_name(DBusConnection*, const char*, DBusError*) -->
-    <function-decl name='dbus_bus_release_name' mangled-name='dbus_bus_release_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1198' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_release_name'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1198' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1199' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1200' column='1'/>
-      <!-- int -->
-      <return type-id='type-id-2'/>
-    </function-decl>
-    <!-- int dbus_bus_request_name(DBusConnection*, const char*, unsigned int, DBusError*) -->
-    <function-decl name='dbus_bus_request_name' mangled-name='dbus_bus_request_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1112' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_request_name'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1112' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1113' column='1'/>
-      <!-- parameter of type 'unsigned int' -->
-      <parameter type-id='type-id-3' name='flags' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1114' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1115' column='1'/>
-      <!-- int -->
-      <return type-id='type-id-2'/>
-    </function-decl>
-    <!-- unsigned long int dbus_bus_get_unix_user(DBusConnection*, const char*, DBusError*) -->
-    <function-decl name='dbus_bus_get_unix_user' mangled-name='dbus_bus_get_unix_user' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='865' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_get_unix_user'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='865' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='866' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='867' column='1'/>
-      <!-- unsigned long int -->
-      <return type-id='type-id-43'/>
-    </function-decl>
-    <!-- char* dbus_bus_get_id(DBusConnection*, DBusError*) -->
-    <function-decl name='dbus_bus_get_id' mangled-name='dbus_bus_get_id' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='948' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_get_id'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='948' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='949' column='1'/>
-      <!-- char* -->
-      <return type-id='type-id-22'/>
-    </function-decl>
-    <!-- const char* dbus_bus_get_unique_name(DBusConnection*) -->
-    <function-decl name='dbus_bus_get_unique_name' mangled-name='dbus_bus_get_unique_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='815' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_get_unique_name'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='815' column='1'/>
-      <!-- const char* -->
-      <return type-id='type-id-15'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_bus_set_unique_name(DBusConnection*, const char*) -->
-    <function-decl name='dbus_bus_set_unique_name' mangled-name='dbus_bus_set_unique_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='766' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_set_unique_name'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='766' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='unique_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='767' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_bus_register(DBusConnection*, DBusError*) -->
-    <function-decl name='dbus_bus_register' mangled-name='dbus_bus_register' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='646' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_register'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='646' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='647' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='559' column='1'/>
+      <!-- DBusConnection* -->
+      <return type-id='type-id-31'/>
     </function-decl>
     <!-- DBusConnection* dbus_bus_get_private(DBusBusType, DBusError*) -->
     <function-decl name='dbus_bus_get_private' mangled-name='dbus_bus_get_private' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='590' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_get_private'>
       <!-- parameter of type 'typedef DBusBusType' -->
-      <parameter type-id='type-id-46' name='type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='590' column='1'/>
+      <parameter type-id='type-id-29' name='type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='590' column='1'/>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='591' column='1'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='591' column='1'/>
       <!-- DBusConnection* -->
-      <return type-id='type-id-47'/>
+      <return type-id='type-id-31'/>
     </function-decl>
-    <!-- DBusConnection* dbus_bus_get(DBusBusType, DBusError*) -->
-    <function-decl name='dbus_bus_get' mangled-name='dbus_bus_get' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='558' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_get'>
-      <!-- parameter of type 'typedef DBusBusType' -->
-      <parameter type-id='type-id-46' name='type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='558' column='1'/>
+    <!-- dbus_bool_t dbus_bus_register(DBusConnection*, DBusError*) -->
+    <function-decl name='dbus_bus_register' mangled-name='dbus_bus_register' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='646' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_register'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='646' column='1'/>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='559' column='1'/>
-      <!-- DBusConnection* -->
-      <return type-id='type-id-47'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='647' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
     </function-decl>
-    <!-- DBusCMutex* -->
-    <pointer-type-def type-id='type-id-49' size-in-bits='64' id='type-id-28'/>
-    <!-- DBusCondVar* -->
-    <pointer-type-def type-id='type-id-50' size-in-bits='64' id='type-id-29'/>
-    <!-- DBusCounter* -->
-    <pointer-type-def type-id='type-id-51' size-in-bits='64' id='type-id-31'/>
-    <!-- DBusHashTable* -->
-    <pointer-type-def type-id='type-id-52' size-in-bits='64' id='type-id-36'/>
-    <!-- DBusMessage* -->
-    <pointer-type-def type-id='type-id-53' size-in-bits='64' id='type-id-30'/>
-    <!-- DBusObjectTree* -->
-    <pointer-type-def type-id='type-id-54' size-in-bits='64' id='type-id-41'/>
-    <!-- DBusRMutex* -->
-    <pointer-type-def type-id='type-id-55' size-in-bits='64' id='type-id-27'/>
-    <!-- DBusTimeoutList* -->
-    <pointer-type-def type-id='type-id-56' size-in-bits='64' id='type-id-34'/>
-    <!-- DBusTransport* -->
-    <pointer-type-def type-id='type-id-57' size-in-bits='64' id='type-id-32'/>
-    <!-- DBusWatchList* -->
-    <pointer-type-def type-id='type-id-58' size-in-bits='64' id='type-id-33'/>
-    <!-- typedef DBusAtomic DBusAtomic -->
-    <typedef-decl name='DBusAtomic' type-id='type-id-59' filepath='../dbus/dbus-sysdeps.h' line='222' column='1' id='type-id-26'/>
+    <!-- dbus_bool_t dbus_bus_set_unique_name(DBusConnection*, const char*) -->
+    <function-decl name='dbus_bus_set_unique_name' mangled-name='dbus_bus_set_unique_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='766' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_set_unique_name'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='766' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='unique_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='767' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- const char* dbus_bus_get_unique_name(DBusConnection*) -->
+    <function-decl name='dbus_bus_get_unique_name' mangled-name='dbus_bus_get_unique_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='815' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_get_unique_name'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='815' column='1'/>
+      <!-- const char* -->
+      <return type-id='type-id-7'/>
+    </function-decl>
+    <!-- unsigned long int dbus_bus_get_unix_user(DBusConnection*, const char*, DBusError*) -->
+    <function-decl name='dbus_bus_get_unix_user' mangled-name='dbus_bus_get_unix_user' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='865' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_get_unix_user'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='865' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='866' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='867' column='1'/>
+      <!-- unsigned long int -->
+      <return type-id='type-id-26'/>
+    </function-decl>
+    <!-- char* dbus_bus_get_id(DBusConnection*, DBusError*) -->
+    <function-decl name='dbus_bus_get_id' mangled-name='dbus_bus_get_id' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='948' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_get_id'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='948' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='949' column='1'/>
+      <!-- char* -->
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <!-- int dbus_bus_request_name(DBusConnection*, const char*, unsigned int, DBusError*) -->
+    <function-decl name='dbus_bus_request_name' mangled-name='dbus_bus_request_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1112' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_request_name'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1112' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1113' column='1'/>
+      <!-- parameter of type 'unsigned int' -->
+      <parameter type-id='type-id-3' name='flags' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1114' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1115' column='1'/>
+      <!-- int -->
+      <return type-id='type-id-2'/>
+    </function-decl>
+    <!-- int dbus_bus_release_name(DBusConnection*, const char*, DBusError*) -->
+    <function-decl name='dbus_bus_release_name' mangled-name='dbus_bus_release_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1198' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_release_name'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1198' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1199' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1200' column='1'/>
+      <!-- int -->
+      <return type-id='type-id-2'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_bus_name_has_owner(DBusConnection*, const char*, DBusError*) -->
+    <function-decl name='dbus_bus_name_has_owner' mangled-name='dbus_bus_name_has_owner' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1280' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_name_has_owner'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1280' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1281' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1282' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_bus_start_service_by_name(DBusConnection*, const char*, dbus_uint32_t, dbus_uint32_t*, DBusError*) -->
+    <function-decl name='dbus_bus_start_service_by_name' mangled-name='dbus_bus_start_service_by_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1356' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_start_service_by_name'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1356' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1357' column='1'/>
+      <!-- parameter of type 'typedef dbus_uint32_t' -->
+      <parameter type-id='type-id-4' name='flags' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1358' column='1'/>
+      <!-- parameter of type 'dbus_uint32_t*' -->
+      <parameter type-id='type-id-32' name='result' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1359' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1360' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_bus_add_match(DBusConnection*, const char*, DBusError*) -->
+    <function-decl name='dbus_bus_add_match' mangled-name='dbus_bus_add_match' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1526' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_add_match'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1526' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='rule' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1527' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1528' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- void dbus_bus_remove_match(DBusConnection*, const char*, DBusError*) -->
+    <function-decl name='dbus_bus_remove_match' mangled-name='dbus_bus_remove_match' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1576' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_bus_remove_match'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1576' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='rule' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1577' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-bus.c' line='1578' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+  </abi-instr>
+  <abi-instr address-size='64' path='dbus-connection.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
+    <!-- DBusHeaderField[10] -->
+    <array-type-def dimensions='1' type-id='type-id-49' size-in-bits='320' id='type-id-50'>
+      <!-- <anonymous range>[10] -->
+      <subrange length='10' type-id='type-id-26' id='type-id-51'/>
+    </array-type-def>
+    <!-- long int -->
+    <type-decl name='long int' size-in-bits='64' id='type-id-52'/>
+    <!-- typedef int dbus_int32_t -->
+    <typedef-decl name='dbus_int32_t' type-id='type-id-2' filepath='../dbus/dbus-arch-deps.h' line='42' column='1' id='type-id-53'/>
     <!-- typedef DBusDataSlotList DBusDataSlotList -->
-    <typedef-decl name='DBusDataSlotList' type-id='type-id-60' filepath='../dbus/dbus-dataslot.h' line='31' column='1' id='type-id-35'/>
-    <!-- typedef __anonymous_enum__ DBusDispatchStatus -->
-    <typedef-decl name='DBusDispatchStatus' type-id='type-id-61' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='84' column='1' id='type-id-40'/>
-    <!-- typedef void (DBusConnection*, typedef DBusDispatchStatus, void*)* DBusDispatchStatusFunction -->
-    <typedef-decl name='DBusDispatchStatusFunction' type-id='type-id-62' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='128' column='1' id='type-id-39'/>
-    <!-- typedef void (void*)* DBusFreeFunction -->
-    <typedef-decl name='DBusFreeFunction' type-id='type-id-63' filepath='../dbus/dbus-memory.h' line='64' column='1' id='type-id-38'/>
-    <!-- typedef void (void*)* DBusWakeupMainFunction -->
-    <typedef-decl name='DBusWakeupMainFunction' type-id='type-id-63' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='135' column='1' id='type-id-37'/>
-    <!-- struct DBusAtomic -->
-    <class-decl name='DBusAtomic' size-in-bits='32' is-struct='yes' visibility='default' filepath='../dbus/dbus-sysdeps.h' line='228' column='1' id='type-id-59'>
+    <typedef-decl name='DBusDataSlotList' type-id='type-id-54' filepath='../dbus/dbus-dataslot.h' line='31' column='1' id='type-id-42'/>
+    <!-- typedef DBusDataSlot DBusDataSlot -->
+    <typedef-decl name='DBusDataSlot' type-id='type-id-55' filepath='../dbus/dbus-dataslot.h' line='34' column='1' id='type-id-56'/>
+    <!-- struct DBusDataSlot -->
+    <class-decl name='DBusDataSlot' size-in-bits='128' is-struct='yes' visibility='default' filepath='../dbus/dbus-dataslot.h' line='37' column='1' id='type-id-55'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- volatile dbus_int32_t DBusAtomic::value -->
-        <var-decl name='value' type-id='type-id-64' visibility='default' filepath='../dbus/dbus-sysdeps.h' line='232' column='1'/>
+        <!-- void* DBusDataSlot::data -->
+        <var-decl name='data' type-id='type-id-8' visibility='default' filepath='../dbus/dbus-dataslot.h' line='38' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- DBusFreeFunction DBusDataSlot::free_data_func -->
+        <var-decl name='free_data_func' type-id='type-id-45' visibility='default' filepath='../dbus/dbus-dataslot.h' line='39' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct DBusDataSlotList -->
-    <class-decl name='DBusDataSlotList' size-in-bits='128' is-struct='yes' visibility='default' filepath='../dbus/dbus-dataslot.h' line='70' column='1' id='type-id-60'>
+    <class-decl name='DBusDataSlotList' size-in-bits='128' is-struct='yes' visibility='default' filepath='../dbus/dbus-dataslot.h' line='70' column='1' id='type-id-54'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- DBusDataSlot* DBusDataSlotList::slots -->
-        <var-decl name='slots' type-id='type-id-65' visibility='default' filepath='../dbus/dbus-dataslot.h' line='71' column='1'/>
+        <var-decl name='slots' type-id='type-id-57' visibility='default' filepath='../dbus/dbus-dataslot.h' line='71' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- int DBusDataSlotList::n_slots -->
         <var-decl name='n_slots' type-id='type-id-2' visibility='default' filepath='../dbus/dbus-dataslot.h' line='72' column='1'/>
       </data-member>
     </class-decl>
-    <!-- enum __anonymous_enum__ -->
-    <enum-decl name='__anonymous_enum__' is-anonymous='yes' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='80' column='1' id='type-id-61'>
-      <underlying-type type-id='type-id-42'/>
+    <!-- typedef DBusHeader DBusHeader -->
+    <typedef-decl name='DBusHeader' type-id='type-id-58' filepath='../dbus/dbus-marshal-header.h' line='30' column='1' id='type-id-59'/>
+    <!-- typedef DBusHeaderField DBusHeaderField -->
+    <typedef-decl name='DBusHeaderField' type-id='type-id-60' filepath='../dbus/dbus-marshal-header.h' line='31' column='1' id='type-id-49'/>
+    <!-- struct DBusHeaderField -->
+    <class-decl name='DBusHeaderField' size-in-bits='32' is-struct='yes' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='40' column='1' id='type-id-60'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- int DBusHeaderField::value_pos -->
+        <var-decl name='value_pos' type-id='type-id-2' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='41' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- struct DBusHeader -->
+    <class-decl name='DBusHeader' size-in-bits='576' is-struct='yes' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='48' column='1' id='type-id-58'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- DBusString DBusHeader::data -->
+        <var-decl name='data' type-id='type-id-10' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='49' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- DBusHeaderField DBusHeader::fields[10] -->
+        <var-decl name='fields' type-id='type-id-50' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='54' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <!-- dbus_uint32_t DBusHeader::padding -->
+        <var-decl name='padding' type-id='type-id-4' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='58' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='515'>
+        <!-- dbus_uint32_t DBusHeader::byte_order -->
+        <var-decl name='byte_order' type-id='type-id-4' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='59' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef void (void*)* DBusFreeFunction -->
+    <typedef-decl name='DBusFreeFunction' type-id='type-id-61' filepath='../dbus/dbus-memory.h' line='64' column='1' id='type-id-45'/>
+    <!-- typedef DBusMessage DBusMessage -->
+    <typedef-decl name='DBusMessage' type-id='type-id-62' filepath='../dbus/dbus-message.h' line='44' column='1' id='type-id-63'/>
+    <!-- typedef DBusCounter DBusCounter -->
+    <typedef-decl name='DBusCounter' type-id='type-id-64' filepath='../dbus/dbus-resources.h' line='32' column='1' id='type-id-65'/>
+    <!-- typedef DBusAtomic DBusAtomic -->
+    <typedef-decl name='DBusAtomic' type-id='type-id-66' filepath='../dbus/dbus-sysdeps.h' line='222' column='1' id='type-id-33'/>
+    <!-- struct DBusAtomic -->
+    <class-decl name='DBusAtomic' size-in-bits='32' is-struct='yes' visibility='default' filepath='../dbus/dbus-sysdeps.h' line='228' column='1' id='type-id-66'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- volatile dbus_int32_t DBusAtomic::value -->
+        <var-decl name='value' type-id='type-id-67' visibility='default' filepath='../dbus/dbus-sysdeps.h' line='232' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef DBusRMutex DBusRMutex -->
+    <typedef-decl name='DBusRMutex' type-id='type-id-68' filepath='../dbus/dbus-threads-internal.h' line='39' column='1' id='type-id-69'/>
+    <!-- typedef DBusCMutex DBusCMutex -->
+    <typedef-decl name='DBusCMutex' type-id='type-id-70' filepath='../dbus/dbus-threads-internal.h' line='45' column='1' id='type-id-71'/>
+    <!-- typedef DBusCondVar DBusCondVar -->
+    <typedef-decl name='DBusCondVar' type-id='type-id-72' filepath='../dbus/dbus-threads.h' line='43' column='1' id='type-id-73'/>
+    <!-- struct DBusPreallocatedSend -->
+    <class-decl name='DBusPreallocatedSend' size-in-bits='192' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='241' column='1' id='type-id-74'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- DBusConnection* DBusPreallocatedSend::connection -->
+        <var-decl name='connection' type-id='type-id-31' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='242' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- DBusList* DBusPreallocatedSend::queue_link -->
+        <var-decl name='queue_link' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='243' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- DBusList* DBusPreallocatedSend::counter_link -->
+        <var-decl name='counter_link' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='244' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- struct DBusConnection -->
+    <class-decl name='DBusConnection' size-in-bits='2112' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='257' column='1' id='type-id-27'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- DBusAtomic DBusConnection::refcount -->
+        <var-decl name='refcount' type-id='type-id-33' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='258' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- DBusRMutex* DBusConnection::mutex -->
+        <var-decl name='mutex' type-id='type-id-34' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='260' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- DBusCMutex* DBusConnection::dispatch_mutex -->
+        <var-decl name='dispatch_mutex' type-id='type-id-35' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='262' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- DBusCondVar* DBusConnection::dispatch_cond -->
+        <var-decl name='dispatch_cond' type-id='type-id-36' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='263' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- DBusCMutex* DBusConnection::io_path_mutex -->
+        <var-decl name='io_path_mutex' type-id='type-id-35' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='264' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- DBusCondVar* DBusConnection::io_path_cond -->
+        <var-decl name='io_path_cond' type-id='type-id-36' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='265' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- DBusList* DBusConnection::outgoing_messages -->
+        <var-decl name='outgoing_messages' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='267' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <!-- DBusList* DBusConnection::incoming_messages -->
+        <var-decl name='incoming_messages' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='268' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <!-- DBusList* DBusConnection::expired_messages -->
+        <var-decl name='expired_messages' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='269' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <!-- DBusMessage* DBusConnection::message_borrowed -->
+        <var-decl name='message_borrowed' type-id='type-id-37' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='271' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <!-- int DBusConnection::n_outgoing -->
+        <var-decl name='n_outgoing' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='275' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='672'>
+        <!-- int DBusConnection::n_incoming -->
+        <var-decl name='n_incoming' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='276' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <!-- DBusCounter* DBusConnection::outgoing_counter -->
+        <var-decl name='outgoing_counter' type-id='type-id-38' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='278' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <!-- DBusTransport* DBusConnection::transport -->
+        <var-decl name='transport' type-id='type-id-39' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='280' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <!-- DBusWatchList* DBusConnection::watches -->
+        <var-decl name='watches' type-id='type-id-40' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='281' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <!-- DBusTimeoutList* DBusConnection::timeouts -->
+        <var-decl name='timeouts' type-id='type-id-41' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='282' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='960'>
+        <!-- DBusList* DBusConnection::filter_list -->
+        <var-decl name='filter_list' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='284' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1024'>
+        <!-- DBusRMutex* DBusConnection::slot_mutex -->
+        <var-decl name='slot_mutex' type-id='type-id-34' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='286' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1088'>
+        <!-- DBusDataSlotList DBusConnection::slot_list -->
+        <var-decl name='slot_list' type-id='type-id-42' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='287' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1216'>
+        <!-- DBusHashTable* DBusConnection::pending_replies -->
+        <var-decl name='pending_replies' type-id='type-id-43' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='289' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1280'>
+        <!-- dbus_uint32_t DBusConnection::client_serial -->
+        <var-decl name='client_serial' type-id='type-id-4' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='291' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1344'>
+        <!-- DBusList* DBusConnection::disconnect_message_link -->
+        <var-decl name='disconnect_message_link' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='292' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1408'>
+        <!-- DBusWakeupMainFunction DBusConnection::wakeup_main_function -->
+        <var-decl name='wakeup_main_function' type-id='type-id-44' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='294' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1472'>
+        <!-- void* DBusConnection::wakeup_main_data -->
+        <var-decl name='wakeup_main_data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='295' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1536'>
+        <!-- DBusFreeFunction DBusConnection::free_wakeup_main_data -->
+        <var-decl name='free_wakeup_main_data' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='296' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1600'>
+        <!-- DBusDispatchStatusFunction DBusConnection::dispatch_status_function -->
+        <var-decl name='dispatch_status_function' type-id='type-id-46' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='298' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1664'>
+        <!-- void* DBusConnection::dispatch_status_data -->
+        <var-decl name='dispatch_status_data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='299' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1728'>
+        <!-- DBusFreeFunction DBusConnection::free_dispatch_status_data -->
+        <var-decl name='free_dispatch_status_data' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='300' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1792'>
+        <!-- DBusDispatchStatus DBusConnection::last_dispatch_status -->
+        <var-decl name='last_dispatch_status' type-id='type-id-47' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='302' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1856'>
+        <!-- DBusObjectTree* DBusConnection::objects -->
+        <var-decl name='objects' type-id='type-id-48' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='304' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1920'>
+        <!-- char* DBusConnection::server_guid -->
+        <var-decl name='server_guid' type-id='type-id-21' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='306' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1984'>
+        <!-- dbus_bool_t DBusConnection::dispatch_acquired -->
+        <var-decl name='dispatch_acquired' type-id='type-id-13' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='312' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='2016'>
+        <!-- dbus_bool_t DBusConnection::io_path_acquired -->
+        <var-decl name='io_path_acquired' type-id='type-id-13' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='313' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='2048'>
+        <!-- unsigned int DBusConnection::shareable -->
+        <var-decl name='shareable' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='315' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='2049'>
+        <!-- unsigned int DBusConnection::exit_on_disconnect -->
+        <var-decl name='exit_on_disconnect' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='317' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='2050'>
+        <!-- unsigned int DBusConnection::route_peer_messages -->
+        <var-decl name='route_peer_messages' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='319' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='2051'>
+        <!-- unsigned int DBusConnection::disconnected_message_arrived -->
+        <var-decl name='disconnected_message_arrived' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='321' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='2052'>
+        <!-- unsigned int DBusConnection::disconnected_message_processed -->
+        <var-decl name='disconnected_message_processed' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='325' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='2053'>
+        <!-- unsigned int DBusConnection::have_connection_lock -->
+        <var-decl name='have_connection_lock' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='330' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='2080'>
+        <!-- int DBusConnection::generation -->
+        <var-decl name='generation' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='334' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef DBusWatch DBusWatch -->
+    <typedef-decl name='DBusWatch' type-id='type-id-75' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='43' column='1' id='type-id-76'/>
+    <!-- typedef DBusTimeout DBusTimeout -->
+    <typedef-decl name='DBusTimeout' type-id='type-id-77' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='45' column='1' id='type-id-78'/>
+    <!-- typedef DBusPreallocatedSend DBusPreallocatedSend -->
+    <typedef-decl name='DBusPreallocatedSend' type-id='type-id-74' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='47' column='1' id='type-id-79'/>
+    <!-- typedef DBusPendingCall DBusPendingCall -->
+    <typedef-decl name='DBusPendingCall' type-id='type-id-80' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='49' column='1' id='type-id-81'/>
+    <!-- typedef DBusObjectPathVTable DBusObjectPathVTable -->
+    <typedef-decl name='DBusObjectPathVTable' type-id='type-id-82' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='53' column='1' id='type-id-83'/>
+    <!-- enum DBusDispatchStatus -->
+    <enum-decl name='DBusDispatchStatus' naming-typedef-id='type-id-47' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='80' column='1' id='type-id-84'>
+      <underlying-type type-id='type-id-25'/>
       <enumerator name='DBUS_DISPATCH_DATA_REMAINS' value='0'/>
       <enumerator name='DBUS_DISPATCH_COMPLETE' value='1'/>
       <enumerator name='DBUS_DISPATCH_NEED_MEMORY' value='2'/>
     </enum-decl>
-    <!-- typedef DBusCMutex DBusCMutex -->
-    <typedef-decl name='DBusCMutex' type-id='type-id-66' filepath='../dbus/dbus-threads-internal.h' line='45' column='1' id='type-id-49'/>
-    <!-- typedef DBusCondVar DBusCondVar -->
-    <typedef-decl name='DBusCondVar' type-id='type-id-67' filepath='../dbus/dbus-threads.h' line='43' column='1' id='type-id-50'/>
-    <!-- typedef DBusCounter DBusCounter -->
-    <typedef-decl name='DBusCounter' type-id='type-id-68' filepath='../dbus/dbus-resources.h' line='32' column='1' id='type-id-51'/>
+    <!-- typedef DBusDispatchStatus DBusDispatchStatus -->
+    <typedef-decl name='DBusDispatchStatus' type-id='type-id-84' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='84' column='1' id='type-id-47'/>
+    <!-- typedef typedef dbus_bool_t (DBusWatch*, void*)* DBusAddWatchFunction -->
+    <typedef-decl name='DBusAddWatchFunction' type-id='type-id-85' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='91' column='1' id='type-id-86'/>
+    <!-- typedef void (DBusWatch*, void*)* DBusWatchToggledFunction -->
+    <typedef-decl name='DBusWatchToggledFunction' type-id='type-id-87' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='97' column='1' id='type-id-88'/>
+    <!-- typedef void (DBusWatch*, void*)* DBusRemoveWatchFunction -->
+    <typedef-decl name='DBusRemoveWatchFunction' type-id='type-id-87' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='103' column='1' id='type-id-89'/>
+    <!-- typedef typedef dbus_bool_t (DBusTimeout*, void*)* DBusAddTimeoutFunction -->
+    <typedef-decl name='DBusAddTimeoutFunction' type-id='type-id-90' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='110' column='1' id='type-id-91'/>
+    <!-- typedef void (DBusTimeout*, void*)* DBusTimeoutToggledFunction -->
+    <typedef-decl name='DBusTimeoutToggledFunction' type-id='type-id-92' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='117' column='1' id='type-id-93'/>
+    <!-- typedef void (DBusTimeout*, void*)* DBusRemoveTimeoutFunction -->
+    <typedef-decl name='DBusRemoveTimeoutFunction' type-id='type-id-92' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='123' column='1' id='type-id-94'/>
+    <!-- typedef void (DBusConnection*, typedef DBusDispatchStatus, void*)* DBusDispatchStatusFunction -->
+    <typedef-decl name='DBusDispatchStatusFunction' type-id='type-id-95' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='128' column='1' id='type-id-46'/>
+    <!-- typedef void (void*)* DBusWakeupMainFunction -->
+    <typedef-decl name='DBusWakeupMainFunction' type-id='type-id-61' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='135' column='1' id='type-id-44'/>
+    <!-- typedef typedef dbus_bool_t (DBusConnection*, unsigned long int, void*)* DBusAllowUnixUserFunction -->
+    <typedef-decl name='DBusAllowUnixUserFunction' type-id='type-id-96' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='143' column='1' id='type-id-97'/>
+    <!-- typedef typedef dbus_bool_t (DBusConnection*, const char*, void*)* DBusAllowWindowsUserFunction -->
+    <typedef-decl name='DBusAllowWindowsUserFunction' type-id='type-id-98' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='153' column='1' id='type-id-99'/>
+    <!-- typedef typedef DBusHandlerResult (DBusConnection*, DBusMessage*, void*)* DBusHandleMessageFunction -->
+    <typedef-decl name='DBusHandleMessageFunction' type-id='type-id-100' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='169' column='1' id='type-id-101'/>
+    <!-- typedef void (DBusConnection*, void*)* DBusObjectPathUnregisterFunction -->
+    <typedef-decl name='DBusObjectPathUnregisterFunction' type-id='type-id-102' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='367' column='1' id='type-id-103'/>
+    <!-- typedef typedef DBusHandlerResult (DBusConnection*, DBusMessage*, void*)* DBusObjectPathMessageFunction -->
+    <typedef-decl name='DBusObjectPathMessageFunction' type-id='type-id-100' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='374' column='1' id='type-id-104'/>
+    <!-- struct DBusObjectPathVTable -->
+    <class-decl name='DBusObjectPathVTable' size-in-bits='384' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='385' column='1' id='type-id-82'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- DBusObjectPathUnregisterFunction DBusObjectPathVTable::unregister_function -->
+        <var-decl name='unregister_function' type-id='type-id-103' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='386' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- DBusObjectPathMessageFunction DBusObjectPathVTable::message_function -->
+        <var-decl name='message_function' type-id='type-id-104' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='387' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- void (void*)* DBusObjectPathVTable::dbus_internal_pad1 -->
+        <var-decl name='dbus_internal_pad1' type-id='type-id-61' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='389' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- void (void*)* DBusObjectPathVTable::dbus_internal_pad2 -->
+        <var-decl name='dbus_internal_pad2' type-id='type-id-61' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='390' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- void (void*)* DBusObjectPathVTable::dbus_internal_pad3 -->
+        <var-decl name='dbus_internal_pad3' type-id='type-id-61' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='391' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- void (void*)* DBusObjectPathVTable::dbus_internal_pad4 -->
+        <var-decl name='dbus_internal_pad4' type-id='type-id-61' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='392' column='1'/>
+      </data-member>
+    </class-decl>
     <!-- typedef DBusHashTable DBusHashTable -->
-    <typedef-decl name='DBusHashTable' type-id='type-id-69' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-hash.h' line='59' column='1' id='type-id-52'/>
-    <!-- typedef DBusMessage DBusMessage -->
-    <typedef-decl name='DBusMessage' type-id='type-id-70' filepath='../dbus/dbus-message.h' line='44' column='1' id='type-id-53'/>
-    <!-- typedef DBusObjectTree DBusObjectTree -->
-    <typedef-decl name='DBusObjectTree' type-id='type-id-71' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-object-tree.h' line='30' column='1' id='type-id-54'/>
-    <!-- typedef DBusRMutex DBusRMutex -->
-    <typedef-decl name='DBusRMutex' type-id='type-id-72' filepath='../dbus/dbus-threads-internal.h' line='39' column='1' id='type-id-55'/>
-    <!-- typedef DBusTimeoutList DBusTimeoutList -->
-    <typedef-decl name='DBusTimeoutList' type-id='type-id-73' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.h' line='38' column='1' id='type-id-56'/>
-    <!-- typedef DBusTransport DBusTransport -->
-    <typedef-decl name='DBusTransport' type-id='type-id-74' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-transport.h' line='33' column='1' id='type-id-57'/>
-    <!-- typedef DBusWatchList DBusWatchList -->
-    <typedef-decl name='DBusWatchList' type-id='type-id-75' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.h' line='38' column='1' id='type-id-58'/>
-    <!-- void (DBusConnection*, typedef DBusDispatchStatus, void*)* -->
-    <pointer-type-def type-id='type-id-76' size-in-bits='64' id='type-id-62'/>
-    <!-- void (void*)* -->
-    <pointer-type-def type-id='type-id-77' size-in-bits='64' id='type-id-63'/>
-    <!-- DBusDataSlot* -->
-    <pointer-type-def type-id='type-id-78' size-in-bits='64' id='type-id-65'/>
-    <!-- struct DBusCMutex -->
-    <class-decl name='DBusCMutex' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-66'/>
-    <!-- struct DBusCondVar -->
-    <class-decl name='DBusCondVar' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-67'/>
-    <!-- struct DBusCounter -->
-    <class-decl name='DBusCounter' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-68'/>
-    <!-- struct DBusHashTable -->
-    <class-decl name='DBusHashTable' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-69'/>
+    <typedef-decl name='DBusHashTable' type-id='type-id-105' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-hash.h' line='59' column='1' id='type-id-106'/>
     <!-- struct DBusMessage -->
-    <class-decl name='DBusMessage' size-in-bits='1472' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='100' column='1' id='type-id-70'>
+    <class-decl name='DBusMessage' size-in-bits='1472' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='100' column='1' id='type-id-62'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- DBusAtomic DBusMessage::refcount -->
-        <var-decl name='refcount' type-id='type-id-26' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='101' column='1'/>
+        <var-decl name='refcount' type-id='type-id-33' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='101' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- DBusHeader DBusMessage::header -->
-        <var-decl name='header' type-id='type-id-79' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='103' column='1'/>
+        <var-decl name='header' type-id='type-id-59' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='103' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='640'>
         <!-- DBusString DBusMessage::body -->
-        <var-decl name='body' type-id='type-id-7' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='105' column='1'/>
+        <var-decl name='body' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='105' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
+      <data-member access='public' layout-offset-in-bits='832'>
         <!-- unsigned int DBusMessage::locked -->
         <var-decl name='locked' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='107' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='1'>
+      <data-member access='public' layout-offset-in-bits='833'>
         <!-- unsigned int DBusMessage::in_cache -->
         <var-decl name='in_cache' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='110' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='896'>
         <!-- DBusList* DBusMessage::counters -->
-        <var-decl name='counters' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='113' column='1'/>
+        <var-decl name='counters' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='113' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='960'>
         <!-- long int DBusMessage::size_counter_delta -->
-        <var-decl name='size_counter_delta' type-id='type-id-80' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='114' column='1'/>
+        <var-decl name='size_counter_delta' type-id='type-id-52' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='114' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
+      <data-member access='public' layout-offset-in-bits='1024'>
         <!-- dbus_uint32_t DBusMessage::changed_stamp -->
-        <var-decl name='changed_stamp' type-id='type-id-16' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='116' column='1'/>
+        <var-decl name='changed_stamp' type-id='type-id-4' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='116' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1088'>
         <!-- DBusDataSlotList DBusMessage::slot_list -->
-        <var-decl name='slot_list' type-id='type-id-35' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='118' column='1'/>
+        <var-decl name='slot_list' type-id='type-id-42' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='118' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1216'>
         <!-- int DBusMessage::generation -->
@@ -1117,7 +1366,7 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='1280'>
         <!-- int* DBusMessage::unix_fds -->
-        <var-decl name='unix_fds' type-id='type-id-24' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='125' column='1'/>
+        <var-decl name='unix_fds' type-id='type-id-23' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='125' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1344'>
         <!-- unsigned int DBusMessage::n_unix_fds -->
@@ -1129,137 +1378,151 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='1408'>
         <!-- long int DBusMessage::unix_fd_counter_delta -->
-        <var-decl name='unix_fd_counter_delta' type-id='type-id-80' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='132' column='1'/>
+        <var-decl name='unix_fd_counter_delta' type-id='type-id-52' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='132' column='1'/>
       </data-member>
     </class-decl>
-    <!-- struct DBusObjectTree -->
-    <class-decl name='DBusObjectTree' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-71'/>
-    <!-- struct DBusRMutex -->
-    <class-decl name='DBusRMutex' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-72'/>
-    <!-- struct DBusTimeoutList -->
-    <class-decl name='DBusTimeoutList' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-73'/>
-    <!-- struct DBusTransport -->
-    <class-decl name='DBusTransport' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-74'/>
-    <!-- struct DBusWatchList -->
-    <class-decl name='DBusWatchList' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-75'/>
+    <!-- typedef DBusObjectTree DBusObjectTree -->
+    <typedef-decl name='DBusObjectTree' type-id='type-id-107' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-object-tree.h' line='30' column='1' id='type-id-108'/>
+    <!-- enum DBusHandlerResult -->
+    <enum-decl name='DBusHandlerResult' naming-typedef-id='type-id-109' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-shared.h' line='67' column='1' id='type-id-110'>
+      <underlying-type type-id='type-id-25'/>
+      <enumerator name='DBUS_HANDLER_RESULT_HANDLED' value='0'/>
+      <enumerator name='DBUS_HANDLER_RESULT_NOT_YET_HANDLED' value='1'/>
+      <enumerator name='DBUS_HANDLER_RESULT_NEED_MEMORY' value='2'/>
+    </enum-decl>
+    <!-- typedef DBusHandlerResult DBusHandlerResult -->
+    <typedef-decl name='DBusHandlerResult' type-id='type-id-110' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-shared.h' line='71' column='1' id='type-id-109'/>
+    <!-- typedef DBusTimeoutList DBusTimeoutList -->
+    <typedef-decl name='DBusTimeoutList' type-id='type-id-111' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.h' line='38' column='1' id='type-id-112'/>
+    <!-- typedef DBusTransport DBusTransport -->
+    <typedef-decl name='DBusTransport' type-id='type-id-113' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-transport.h' line='33' column='1' id='type-id-114'/>
+    <!-- typedef DBusWatchList DBusWatchList -->
+    <typedef-decl name='DBusWatchList' type-id='type-id-115' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.h' line='38' column='1' id='type-id-116'/>
+    <!-- DBusCMutex* -->
+    <pointer-type-def type-id='type-id-71' size-in-bits='64' id='type-id-35'/>
+    <!-- DBusCondVar* -->
+    <pointer-type-def type-id='type-id-73' size-in-bits='64' id='type-id-36'/>
+    <!-- DBusCounter* -->
+    <pointer-type-def type-id='type-id-65' size-in-bits='64' id='type-id-38'/>
+    <!-- DBusDataSlot* -->
+    <pointer-type-def type-id='type-id-56' size-in-bits='64' id='type-id-57'/>
+    <!-- DBusHashTable* -->
+    <pointer-type-def type-id='type-id-106' size-in-bits='64' id='type-id-43'/>
+    <!-- DBusMessage* -->
+    <pointer-type-def type-id='type-id-63' size-in-bits='64' id='type-id-37'/>
+    <!-- DBusObjectTree* -->
+    <pointer-type-def type-id='type-id-108' size-in-bits='64' id='type-id-48'/>
+    <!-- DBusPendingCall* -->
+    <pointer-type-def type-id='type-id-81' size-in-bits='64' id='type-id-117'/>
+    <!-- DBusPendingCall** -->
+    <pointer-type-def type-id='type-id-117' size-in-bits='64' id='type-id-118'/>
+    <!-- DBusPreallocatedSend* -->
+    <pointer-type-def type-id='type-id-79' size-in-bits='64' id='type-id-119'/>
+    <!-- DBusRMutex* -->
+    <pointer-type-def type-id='type-id-69' size-in-bits='64' id='type-id-34'/>
+    <!-- DBusTimeout* -->
+    <pointer-type-def type-id='type-id-78' size-in-bits='64' id='type-id-120'/>
+    <!-- DBusTimeoutList* -->
+    <pointer-type-def type-id='type-id-112' size-in-bits='64' id='type-id-41'/>
+    <!-- DBusTransport* -->
+    <pointer-type-def type-id='type-id-114' size-in-bits='64' id='type-id-39'/>
+    <!-- DBusWatch* -->
+    <pointer-type-def type-id='type-id-76' size-in-bits='64' id='type-id-121'/>
+    <!-- DBusWatchList* -->
+    <pointer-type-def type-id='type-id-116' size-in-bits='64' id='type-id-40'/>
+    <!-- char** -->
+    <pointer-type-def type-id='type-id-21' size-in-bits='64' id='type-id-122'/>
+    <!-- char*** -->
+    <pointer-type-def type-id='type-id-122' size-in-bits='64' id='type-id-123'/>
+    <!-- const DBusObjectPathVTable -->
+    <qualified-type-def type-id='type-id-83' const='yes' id='type-id-124'/>
+    <!-- const DBusObjectPathVTable* -->
+    <pointer-type-def type-id='type-id-124' size-in-bits='64' id='type-id-125'/>
+    <!-- dbus_int32_t* -->
+    <pointer-type-def type-id='type-id-53' size-in-bits='64' id='type-id-126'/>
+    <!-- typedef DBusHandlerResult (DBusConnection*, DBusMessage*, void*)* -->
+    <pointer-type-def type-id='type-id-127' size-in-bits='64' id='type-id-100'/>
+    <!-- typedef dbus_bool_t (DBusConnection*, const char*, void*)* -->
+    <pointer-type-def type-id='type-id-128' size-in-bits='64' id='type-id-98'/>
+    <!-- typedef dbus_bool_t (DBusConnection*, unsigned long int, void*)* -->
+    <pointer-type-def type-id='type-id-129' size-in-bits='64' id='type-id-96'/>
+    <!-- typedef dbus_bool_t (DBusTimeout*, void*)* -->
+    <pointer-type-def type-id='type-id-130' size-in-bits='64' id='type-id-90'/>
+    <!-- typedef dbus_bool_t (DBusWatch*, void*)* -->
+    <pointer-type-def type-id='type-id-131' size-in-bits='64' id='type-id-85'/>
+    <!-- unsigned long int* -->
+    <pointer-type-def type-id='type-id-26' size-in-bits='64' id='type-id-132'/>
+    <!-- void (DBusConnection*, typedef DBusDispatchStatus, void*)* -->
+    <pointer-type-def type-id='type-id-133' size-in-bits='64' id='type-id-95'/>
+    <!-- void (DBusConnection*, void*)* -->
+    <pointer-type-def type-id='type-id-134' size-in-bits='64' id='type-id-102'/>
+    <!-- void (DBusTimeout*, void*)* -->
+    <pointer-type-def type-id='type-id-135' size-in-bits='64' id='type-id-92'/>
+    <!-- void (DBusWatch*, void*)* -->
+    <pointer-type-def type-id='type-id-136' size-in-bits='64' id='type-id-87'/>
+    <!-- void (void*)* -->
+    <pointer-type-def type-id='type-id-137' size-in-bits='64' id='type-id-61'/>
+    <!-- void** -->
+    <pointer-type-def type-id='type-id-8' size-in-bits='64' id='type-id-138'/>
     <!-- volatile dbus_int32_t -->
-    <qualified-type-def type-id='type-id-81' volatile='yes' id='type-id-64'/>
-    <!-- long int -->
-    <type-decl name='long int' size-in-bits='64' id='type-id-80'/>
-    <!-- typedef DBusDataSlot DBusDataSlot -->
-    <typedef-decl name='DBusDataSlot' type-id='type-id-82' filepath='../dbus/dbus-dataslot.h' line='34' column='1' id='type-id-78'/>
-    <!-- typedef DBusHeader DBusHeader -->
-    <typedef-decl name='DBusHeader' type-id='type-id-83' filepath='../dbus/dbus-marshal-header.h' line='30' column='1' id='type-id-79'/>
-    <!-- typedef int dbus_int32_t -->
-    <typedef-decl name='dbus_int32_t' type-id='type-id-2' filepath='../dbus/dbus-arch-deps.h' line='42' column='1' id='type-id-81'/>
-    <!-- struct DBusDataSlot -->
-    <class-decl name='DBusDataSlot' size-in-bits='128' is-struct='yes' visibility='default' filepath='../dbus/dbus-dataslot.h' line='37' column='1' id='type-id-82'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- void* DBusDataSlot::data -->
-        <var-decl name='data' type-id='type-id-10' visibility='default' filepath='../dbus/dbus-dataslot.h' line='38' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- DBusFreeFunction DBusDataSlot::free_data_func -->
-        <var-decl name='free_data_func' type-id='type-id-38' visibility='default' filepath='../dbus/dbus-dataslot.h' line='39' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- struct DBusHeader -->
-    <class-decl name='DBusHeader' size-in-bits='576' is-struct='yes' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='48' column='1' id='type-id-83'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- DBusString DBusHeader::data -->
-        <var-decl name='data' type-id='type-id-7' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='49' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- DBusHeaderField DBusHeader::fields[10] -->
-        <var-decl name='fields' type-id='type-id-84' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='54' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- dbus_uint32_t DBusHeader::padding -->
-        <var-decl name='padding' type-id='type-id-16' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='58' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='3'>
-        <!-- dbus_uint32_t DBusHeader::byte_order -->
-        <var-decl name='byte_order' type-id='type-id-16' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='59' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- DBusHeaderField[10] -->
-    <array-type-def dimensions='1' type-id='type-id-85' size-in-bits='320' id='type-id-84'>
-      <!-- <anonymous range>[10] -->
-      <subrange length='10' type-id='type-id-43' id='type-id-86'/>
-    </array-type-def>
-    <!-- typedef DBusHeaderField DBusHeaderField -->
-    <typedef-decl name='DBusHeaderField' type-id='type-id-87' filepath='../dbus/dbus-marshal-header.h' line='31' column='1' id='type-id-85'/>
-    <!-- struct DBusHeaderField -->
-    <class-decl name='DBusHeaderField' size-in-bits='32' is-struct='yes' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='40' column='1' id='type-id-87'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int DBusHeaderField::value_pos -->
-        <var-decl name='value_pos' type-id='type-id-2' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='41' column='1'/>
-      </data-member>
-    </class-decl>
-  </abi-instr>
-  <abi-instr address-size='64' path='dbus-connection.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
-    <!-- DBusHeaderField[10] -->
-    <array-type-def dimensions='1' type-id='type-id-85' size-in-bits='320' id='type-id-84'>
-      <!-- <anonymous range>[10] -->
-      <subrange length='10' type-id='type-id-43' id='type-id-86'/>
-    </array-type-def>
+    <qualified-type-def type-id='type-id-53' volatile='yes' id='type-id-67'/>
     <!-- struct DBusCMutex -->
-    <class-decl name='DBusCMutex' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-66'/>
+    <class-decl name='DBusCMutex' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-70'/>
     <!-- struct DBusCondVar -->
-    <class-decl name='DBusCondVar' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-67'/>
+    <class-decl name='DBusCondVar' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-72'/>
     <!-- struct DBusCounter -->
-    <class-decl name='DBusCounter' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-68'/>
+    <class-decl name='DBusCounter' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-64'/>
     <!-- struct DBusHashTable -->
-    <class-decl name='DBusHashTable' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-69'/>
+    <class-decl name='DBusHashTable' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-105'/>
     <!-- struct DBusObjectTree -->
-    <class-decl name='DBusObjectTree' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-71'/>
+    <class-decl name='DBusObjectTree' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-107'/>
     <!-- struct DBusPendingCall -->
-    <class-decl name='DBusPendingCall' size-in-bits='576' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='63' column='1' id='type-id-88'>
+    <class-decl name='DBusPendingCall' size-in-bits='576' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='63' column='1' id='type-id-80'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- DBusAtomic DBusPendingCall::refcount -->
-        <var-decl name='refcount' type-id='type-id-26' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='64' column='1'/>
+        <var-decl name='refcount' type-id='type-id-33' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='64' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- DBusDataSlotList DBusPendingCall::slot_list -->
-        <var-decl name='slot_list' type-id='type-id-35' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='66' column='1'/>
+        <var-decl name='slot_list' type-id='type-id-42' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='66' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- DBusPendingCallNotifyFunction DBusPendingCall::function -->
-        <var-decl name='function' type-id='type-id-89' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='68' column='1'/>
+        <var-decl name='function' type-id='type-id-139' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='68' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- DBusConnection* DBusPendingCall::connection -->
-        <var-decl name='connection' type-id='type-id-47' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='70' column='1'/>
+        <var-decl name='connection' type-id='type-id-31' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='70' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- DBusMessage* DBusPendingCall::reply -->
-        <var-decl name='reply' type-id='type-id-30' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='71' column='1'/>
+        <var-decl name='reply' type-id='type-id-37' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='71' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='384'>
         <!-- DBusTimeout* DBusPendingCall::timeout -->
-        <var-decl name='timeout' type-id='type-id-90' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='72' column='1'/>
+        <var-decl name='timeout' type-id='type-id-120' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='72' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='448'>
         <!-- DBusList* DBusPendingCall::timeout_link -->
-        <var-decl name='timeout_link' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='74' column='1'/>
+        <var-decl name='timeout_link' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='74' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='512'>
         <!-- dbus_uint32_t DBusPendingCall::reply_serial -->
-        <var-decl name='reply_serial' type-id='type-id-16' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='76' column='1'/>
+        <var-decl name='reply_serial' type-id='type-id-4' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='76' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
+      <data-member access='public' layout-offset-in-bits='544'>
         <!-- unsigned int DBusPendingCall::completed -->
         <var-decl name='completed' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='78' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='1'>
+      <data-member access='public' layout-offset-in-bits='545'>
         <!-- unsigned int DBusPendingCall::timeout_added -->
         <var-decl name='timeout_added' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='79' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct DBusRMutex -->
-    <class-decl name='DBusRMutex' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-72'/>
+    <class-decl name='DBusRMutex' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-68'/>
     <!-- struct DBusTimeout -->
-    <class-decl name='DBusTimeout' size-in-bits='448' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='41' column='1' id='type-id-91'>
+    <class-decl name='DBusTimeout' size-in-bits='448' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='41' column='1' id='type-id-77'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- int DBusTimeout::refcount -->
         <var-decl name='refcount' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='42' column='1'/>
@@ -1270,35 +1533,35 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- DBusTimeoutHandler DBusTimeout::handler -->
-        <var-decl name='handler' type-id='type-id-92' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='45' column='1'/>
+        <var-decl name='handler' type-id='type-id-140' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='45' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- void* DBusTimeout::handler_data -->
-        <var-decl name='handler_data' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='46' column='1'/>
+        <var-decl name='handler_data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='46' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- DBusFreeFunction DBusTimeout::free_handler_data_function -->
-        <var-decl name='free_handler_data_function' type-id='type-id-38' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='47' column='1'/>
+        <var-decl name='free_handler_data_function' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='47' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- void* DBusTimeout::data -->
-        <var-decl name='data' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='49' column='1'/>
+        <var-decl name='data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='49' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- DBusFreeFunction DBusTimeout::free_data_function -->
-        <var-decl name='free_data_function' type-id='type-id-38' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='50' column='1'/>
+        <var-decl name='free_data_function' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='50' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
+      <data-member access='public' layout-offset-in-bits='384'>
         <!-- unsigned int DBusTimeout::enabled -->
         <var-decl name='enabled' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='51' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct DBusTimeoutList -->
-    <class-decl name='DBusTimeoutList' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-73'/>
+    <class-decl name='DBusTimeoutList' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-111'/>
     <!-- struct DBusTransport -->
-    <class-decl name='DBusTransport' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-74'/>
+    <class-decl name='DBusTransport' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-113'/>
     <!-- struct DBusWatch -->
-    <class-decl name='DBusWatch' size-in-bits='512' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='41' column='1' id='type-id-93'>
+    <class-decl name='DBusWatch' size-in-bits='512' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='41' column='1' id='type-id-75'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- int DBusWatch::refcount -->
         <var-decl name='refcount' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='42' column='1'/>
@@ -1313,1198 +1576,872 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- DBusWatchHandler DBusWatch::handler -->
-        <var-decl name='handler' type-id='type-id-94' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='46' column='1'/>
+        <var-decl name='handler' type-id='type-id-141' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='46' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- void* DBusWatch::handler_data -->
-        <var-decl name='handler_data' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='47' column='1'/>
+        <var-decl name='handler_data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='47' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- DBusFreeFunction DBusWatch::free_handler_data_function -->
-        <var-decl name='free_handler_data_function' type-id='type-id-38' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='48' column='1'/>
+        <var-decl name='free_handler_data_function' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='48' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- void* DBusWatch::data -->
-        <var-decl name='data' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='50' column='1'/>
+        <var-decl name='data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='50' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='384'>
         <!-- DBusFreeFunction DBusWatch::free_data_function -->
-        <var-decl name='free_data_function' type-id='type-id-38' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='51' column='1'/>
+        <var-decl name='free_data_function' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='51' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
+      <data-member access='public' layout-offset-in-bits='448'>
         <!-- unsigned int DBusWatch::enabled -->
         <var-decl name='enabled' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='52' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='1'>
+      <data-member access='public' layout-offset-in-bits='449'>
         <!-- unsigned int DBusWatch::oom_last_time -->
         <var-decl name='oom_last_time' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='53' column='1'/>
       </data-member>
     </class-decl>
     <!-- struct DBusWatchList -->
-    <class-decl name='DBusWatchList' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-75'/>
-    <!-- long int -->
-    <type-decl name='long int' size-in-bits='64' id='type-id-80'/>
-    <!-- typedef DBusAtomic DBusAtomic -->
-    <typedef-decl name='DBusAtomic' type-id='type-id-59' filepath='../dbus/dbus-sysdeps.h' line='222' column='1' id='type-id-26'/>
-    <!-- struct DBusAtomic -->
-    <class-decl name='DBusAtomic' size-in-bits='32' is-struct='yes' visibility='default' filepath='../dbus/dbus-sysdeps.h' line='228' column='1' id='type-id-59'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- volatile dbus_int32_t DBusAtomic::value -->
-        <var-decl name='value' type-id='type-id-64' visibility='default' filepath='../dbus/dbus-sysdeps.h' line='232' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef int dbus_int32_t -->
-    <typedef-decl name='dbus_int32_t' type-id='type-id-2' filepath='../dbus/dbus-arch-deps.h' line='42' column='1' id='type-id-81'/>
-    <!-- typedef DBusRMutex DBusRMutex -->
-    <typedef-decl name='DBusRMutex' type-id='type-id-72' filepath='../dbus/dbus-threads-internal.h' line='39' column='1' id='type-id-55'/>
-    <!-- typedef DBusCMutex DBusCMutex -->
-    <typedef-decl name='DBusCMutex' type-id='type-id-66' filepath='../dbus/dbus-threads-internal.h' line='45' column='1' id='type-id-49'/>
-    <!-- typedef DBusCondVar DBusCondVar -->
-    <typedef-decl name='DBusCondVar' type-id='type-id-67' filepath='../dbus/dbus-threads.h' line='43' column='1' id='type-id-50'/>
-    <!-- typedef DBusMessage DBusMessage -->
-    <typedef-decl name='DBusMessage' type-id='type-id-70' filepath='../dbus/dbus-message.h' line='44' column='1' id='type-id-53'/>
-    <!-- struct DBusMessage -->
-    <class-decl name='DBusMessage' size-in-bits='1472' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='100' column='1' id='type-id-70'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- DBusAtomic DBusMessage::refcount -->
-        <var-decl name='refcount' type-id='type-id-26' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='101' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- DBusHeader DBusMessage::header -->
-        <var-decl name='header' type-id='type-id-79' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='103' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='640'>
-        <!-- DBusString DBusMessage::body -->
-        <var-decl name='body' type-id='type-id-7' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='105' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- unsigned int DBusMessage::locked -->
-        <var-decl name='locked' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='107' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1'>
-        <!-- unsigned int DBusMessage::in_cache -->
-        <var-decl name='in_cache' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='110' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='896'>
-        <!-- DBusList* DBusMessage::counters -->
-        <var-decl name='counters' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='113' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='960'>
-        <!-- long int DBusMessage::size_counter_delta -->
-        <var-decl name='size_counter_delta' type-id='type-id-80' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='114' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- dbus_uint32_t DBusMessage::changed_stamp -->
-        <var-decl name='changed_stamp' type-id='type-id-16' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='116' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1088'>
-        <!-- DBusDataSlotList DBusMessage::slot_list -->
-        <var-decl name='slot_list' type-id='type-id-35' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='118' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1216'>
-        <!-- int DBusMessage::generation -->
-        <var-decl name='generation' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='121' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1280'>
-        <!-- int* DBusMessage::unix_fds -->
-        <var-decl name='unix_fds' type-id='type-id-24' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='125' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1344'>
-        <!-- unsigned int DBusMessage::n_unix_fds -->
-        <var-decl name='n_unix_fds' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='129' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1376'>
-        <!-- unsigned int DBusMessage::n_unix_fds_allocated -->
-        <var-decl name='n_unix_fds_allocated' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='130' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1408'>
-        <!-- long int DBusMessage::unix_fd_counter_delta -->
-        <var-decl name='unix_fd_counter_delta' type-id='type-id-80' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message-private.h' line='132' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef DBusHeader DBusHeader -->
-    <typedef-decl name='DBusHeader' type-id='type-id-83' filepath='../dbus/dbus-marshal-header.h' line='30' column='1' id='type-id-79'/>
-    <!-- struct DBusHeader -->
-    <class-decl name='DBusHeader' size-in-bits='576' is-struct='yes' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='48' column='1' id='type-id-83'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- DBusString DBusHeader::data -->
-        <var-decl name='data' type-id='type-id-7' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='49' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- DBusHeaderField DBusHeader::fields[10] -->
-        <var-decl name='fields' type-id='type-id-84' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='54' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- dbus_uint32_t DBusHeader::padding -->
-        <var-decl name='padding' type-id='type-id-16' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='58' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='3'>
-        <!-- dbus_uint32_t DBusHeader::byte_order -->
-        <var-decl name='byte_order' type-id='type-id-16' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='59' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef DBusHeaderField DBusHeaderField -->
-    <typedef-decl name='DBusHeaderField' type-id='type-id-87' filepath='../dbus/dbus-marshal-header.h' line='31' column='1' id='type-id-85'/>
-    <!-- struct DBusHeaderField -->
-    <class-decl name='DBusHeaderField' size-in-bits='32' is-struct='yes' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='40' column='1' id='type-id-87'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int DBusHeaderField::value_pos -->
-        <var-decl name='value_pos' type-id='type-id-2' visibility='default' filepath='../dbus/dbus-marshal-header.h' line='41' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef DBusDataSlotList DBusDataSlotList -->
-    <typedef-decl name='DBusDataSlotList' type-id='type-id-60' filepath='../dbus/dbus-dataslot.h' line='31' column='1' id='type-id-35'/>
-    <!-- struct DBusDataSlotList -->
-    <class-decl name='DBusDataSlotList' size-in-bits='128' is-struct='yes' visibility='default' filepath='../dbus/dbus-dataslot.h' line='70' column='1' id='type-id-60'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- DBusDataSlot* DBusDataSlotList::slots -->
-        <var-decl name='slots' type-id='type-id-65' visibility='default' filepath='../dbus/dbus-dataslot.h' line='71' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int DBusDataSlotList::n_slots -->
-        <var-decl name='n_slots' type-id='type-id-2' visibility='default' filepath='../dbus/dbus-dataslot.h' line='72' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef DBusDataSlot DBusDataSlot -->
-    <typedef-decl name='DBusDataSlot' type-id='type-id-82' filepath='../dbus/dbus-dataslot.h' line='34' column='1' id='type-id-78'/>
-    <!-- struct DBusDataSlot -->
-    <class-decl name='DBusDataSlot' size-in-bits='128' is-struct='yes' visibility='default' filepath='../dbus/dbus-dataslot.h' line='37' column='1' id='type-id-82'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- void* DBusDataSlot::data -->
-        <var-decl name='data' type-id='type-id-10' visibility='default' filepath='../dbus/dbus-dataslot.h' line='38' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- DBusFreeFunction DBusDataSlot::free_data_func -->
-        <var-decl name='free_data_func' type-id='type-id-38' visibility='default' filepath='../dbus/dbus-dataslot.h' line='39' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef void (void*)* DBusFreeFunction -->
-    <typedef-decl name='DBusFreeFunction' type-id='type-id-63' filepath='../dbus/dbus-memory.h' line='64' column='1' id='type-id-38'/>
-    <!-- typedef DBusCounter DBusCounter -->
-    <typedef-decl name='DBusCounter' type-id='type-id-68' filepath='../dbus/dbus-resources.h' line='32' column='1' id='type-id-51'/>
-    <!-- typedef DBusTransport DBusTransport -->
-    <typedef-decl name='DBusTransport' type-id='type-id-74' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-transport.h' line='33' column='1' id='type-id-57'/>
-    <!-- typedef DBusWatchList DBusWatchList -->
-    <typedef-decl name='DBusWatchList' type-id='type-id-75' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.h' line='38' column='1' id='type-id-58'/>
-    <!-- typedef DBusTimeoutList DBusTimeoutList -->
-    <typedef-decl name='DBusTimeoutList' type-id='type-id-73' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.h' line='38' column='1' id='type-id-56'/>
-    <!-- typedef DBusHashTable DBusHashTable -->
-    <typedef-decl name='DBusHashTable' type-id='type-id-69' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-hash.h' line='59' column='1' id='type-id-52'/>
-    <!-- typedef void (void*)* DBusWakeupMainFunction -->
-    <typedef-decl name='DBusWakeupMainFunction' type-id='type-id-63' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='135' column='1' id='type-id-37'/>
-    <!-- typedef void (DBusConnection*, typedef DBusDispatchStatus, void*)* DBusDispatchStatusFunction -->
-    <typedef-decl name='DBusDispatchStatusFunction' type-id='type-id-62' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='128' column='1' id='type-id-39'/>
-    <!-- typedef __anonymous_enum__ DBusDispatchStatus -->
-    <typedef-decl name='DBusDispatchStatus' type-id='type-id-61' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='84' column='1' id='type-id-40'/>
-    <!-- enum __anonymous_enum__ -->
-    <enum-decl name='__anonymous_enum__' is-anonymous='yes' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='80' column='1' id='type-id-61'>
-      <underlying-type type-id='type-id-42'/>
-      <enumerator name='DBUS_DISPATCH_DATA_REMAINS' value='0'/>
-      <enumerator name='DBUS_DISPATCH_COMPLETE' value='1'/>
-      <enumerator name='DBUS_DISPATCH_NEED_MEMORY' value='2'/>
-    </enum-decl>
-    <!-- typedef DBusObjectTree DBusObjectTree -->
-    <typedef-decl name='DBusObjectTree' type-id='type-id-71' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-object-tree.h' line='30' column='1' id='type-id-54'/>
-    <!-- typedef DBusObjectPathVTable DBusObjectPathVTable -->
-    <typedef-decl name='DBusObjectPathVTable' type-id='type-id-95' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='53' column='1' id='type-id-96'/>
-    <!-- struct DBusObjectPathVTable -->
-    <class-decl name='DBusObjectPathVTable' size-in-bits='384' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='385' column='1' id='type-id-95'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- DBusObjectPathUnregisterFunction DBusObjectPathVTable::unregister_function -->
-        <var-decl name='unregister_function' type-id='type-id-97' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='386' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- DBusObjectPathMessageFunction DBusObjectPathVTable::message_function -->
-        <var-decl name='message_function' type-id='type-id-98' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='387' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- void (void*)* DBusObjectPathVTable::dbus_internal_pad1 -->
-        <var-decl name='dbus_internal_pad1' type-id='type-id-63' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='389' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- void (void*)* DBusObjectPathVTable::dbus_internal_pad2 -->
-        <var-decl name='dbus_internal_pad2' type-id='type-id-63' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='390' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- void (void*)* DBusObjectPathVTable::dbus_internal_pad3 -->
-        <var-decl name='dbus_internal_pad3' type-id='type-id-63' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='391' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- void (void*)* DBusObjectPathVTable::dbus_internal_pad4 -->
-        <var-decl name='dbus_internal_pad4' type-id='type-id-63' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='392' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef void (DBusConnection*, void*)* DBusObjectPathUnregisterFunction -->
-    <typedef-decl name='DBusObjectPathUnregisterFunction' type-id='type-id-99' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='367' column='1' id='type-id-97'/>
-    <!-- typedef typedef DBusHandlerResult (DBusConnection*, DBusMessage*, void*)* DBusObjectPathMessageFunction -->
-    <typedef-decl name='DBusObjectPathMessageFunction' type-id='type-id-100' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='374' column='1' id='type-id-98'/>
-    <!-- typedef __anonymous_enum__1 DBusHandlerResult -->
-    <typedef-decl name='DBusHandlerResult' type-id='type-id-101' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-shared.h' line='71' column='1' id='type-id-102'/>
-    <!-- enum __anonymous_enum__1 -->
-    <enum-decl name='__anonymous_enum__1' is-anonymous='yes' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-shared.h' line='67' column='1' id='type-id-101'>
-      <underlying-type type-id='type-id-42'/>
-      <enumerator name='DBUS_HANDLER_RESULT_HANDLED' value='0'/>
-      <enumerator name='DBUS_HANDLER_RESULT_NOT_YET_HANDLED' value='1'/>
-      <enumerator name='DBUS_HANDLER_RESULT_NEED_MEMORY' value='2'/>
-    </enum-decl>
-    <!-- typedef typedef DBusHandlerResult (DBusConnection*, DBusMessage*, void*)* DBusHandleMessageFunction -->
-    <typedef-decl name='DBusHandleMessageFunction' type-id='type-id-100' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='169' column='1' id='type-id-103'/>
-    <!-- typedef typedef dbus_bool_t (DBusConnection*, const char*, void*)* DBusAllowWindowsUserFunction -->
-    <typedef-decl name='DBusAllowWindowsUserFunction' type-id='type-id-104' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='153' column='1' id='type-id-105'/>
-    <!-- typedef typedef dbus_bool_t (DBusConnection*, unsigned long int, void*)* DBusAllowUnixUserFunction -->
-    <typedef-decl name='DBusAllowUnixUserFunction' type-id='type-id-106' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='143' column='1' id='type-id-107'/>
-    <!-- typedef typedef dbus_bool_t (DBusTimeout*, void*)* DBusAddTimeoutFunction -->
-    <typedef-decl name='DBusAddTimeoutFunction' type-id='type-id-108' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='110' column='1' id='type-id-109'/>
-    <!-- typedef DBusTimeout DBusTimeout -->
-    <typedef-decl name='DBusTimeout' type-id='type-id-91' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='45' column='1' id='type-id-110'/>
-    <!-- typedef void (DBusTimeout*, void*)* DBusRemoveTimeoutFunction -->
-    <typedef-decl name='DBusRemoveTimeoutFunction' type-id='type-id-111' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='123' column='1' id='type-id-112'/>
-    <!-- typedef void (DBusTimeout*, void*)* DBusTimeoutToggledFunction -->
-    <typedef-decl name='DBusTimeoutToggledFunction' type-id='type-id-111' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='117' column='1' id='type-id-113'/>
-    <!-- typedef typedef dbus_bool_t (DBusWatch*, void*)* DBusAddWatchFunction -->
-    <typedef-decl name='DBusAddWatchFunction' type-id='type-id-114' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='91' column='1' id='type-id-115'/>
-    <!-- typedef DBusWatch DBusWatch -->
-    <typedef-decl name='DBusWatch' type-id='type-id-93' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='43' column='1' id='type-id-116'/>
-    <!-- typedef void (DBusWatch*, void*)* DBusRemoveWatchFunction -->
-    <typedef-decl name='DBusRemoveWatchFunction' type-id='type-id-117' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='103' column='1' id='type-id-118'/>
-    <!-- typedef void (DBusWatch*, void*)* DBusWatchToggledFunction -->
-    <typedef-decl name='DBusWatchToggledFunction' type-id='type-id-117' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='97' column='1' id='type-id-119'/>
-    <!-- typedef DBusPreallocatedSend DBusPreallocatedSend -->
-    <typedef-decl name='DBusPreallocatedSend' type-id='type-id-120' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='47' column='1' id='type-id-121'/>
-    <!-- struct DBusPreallocatedSend -->
-    <class-decl name='DBusPreallocatedSend' size-in-bits='192' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='241' column='1' id='type-id-120'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- DBusConnection* DBusPreallocatedSend::connection -->
-        <var-decl name='connection' type-id='type-id-47' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='242' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- DBusList* DBusPreallocatedSend::queue_link -->
-        <var-decl name='queue_link' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='243' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- DBusList* DBusPreallocatedSend::counter_link -->
-        <var-decl name='counter_link' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='244' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef DBusPendingCall DBusPendingCall -->
-    <typedef-decl name='DBusPendingCall' type-id='type-id-88' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.h' line='49' column='1' id='type-id-122'/>
-    <!-- DBusCMutex* -->
-    <pointer-type-def type-id='type-id-49' size-in-bits='64' id='type-id-28'/>
-    <!-- DBusCondVar* -->
-    <pointer-type-def type-id='type-id-50' size-in-bits='64' id='type-id-29'/>
-    <!-- DBusCounter* -->
-    <pointer-type-def type-id='type-id-51' size-in-bits='64' id='type-id-31'/>
-    <!-- DBusDataSlot* -->
-    <pointer-type-def type-id='type-id-78' size-in-bits='64' id='type-id-65'/>
-    <!-- DBusHashTable* -->
-    <pointer-type-def type-id='type-id-52' size-in-bits='64' id='type-id-36'/>
-    <!-- DBusMessage* -->
-    <pointer-type-def type-id='type-id-53' size-in-bits='64' id='type-id-30'/>
-    <!-- DBusObjectTree* -->
-    <pointer-type-def type-id='type-id-54' size-in-bits='64' id='type-id-41'/>
-    <!-- DBusPendingCall* -->
-    <pointer-type-def type-id='type-id-122' size-in-bits='64' id='type-id-123'/>
-    <!-- DBusPendingCall** -->
-    <pointer-type-def type-id='type-id-123' size-in-bits='64' id='type-id-124'/>
-    <!-- DBusPreallocatedSend* -->
-    <pointer-type-def type-id='type-id-121' size-in-bits='64' id='type-id-125'/>
-    <!-- DBusRMutex* -->
-    <pointer-type-def type-id='type-id-55' size-in-bits='64' id='type-id-27'/>
-    <!-- DBusTimeout* -->
-    <pointer-type-def type-id='type-id-110' size-in-bits='64' id='type-id-90'/>
-    <!-- DBusTimeoutList* -->
-    <pointer-type-def type-id='type-id-56' size-in-bits='64' id='type-id-34'/>
-    <!-- DBusTransport* -->
-    <pointer-type-def type-id='type-id-57' size-in-bits='64' id='type-id-32'/>
-    <!-- DBusWatch* -->
-    <pointer-type-def type-id='type-id-116' size-in-bits='64' id='type-id-126'/>
-    <!-- DBusWatchList* -->
-    <pointer-type-def type-id='type-id-58' size-in-bits='64' id='type-id-33'/>
-    <!-- char** -->
-    <pointer-type-def type-id='type-id-22' size-in-bits='64' id='type-id-127'/>
-    <!-- char*** -->
-    <pointer-type-def type-id='type-id-127' size-in-bits='64' id='type-id-128'/>
-    <!-- const DBusObjectPathVTable -->
-    <qualified-type-def type-id='type-id-96' const='yes' id='type-id-129'/>
-    <!-- const DBusObjectPathVTable* -->
-    <pointer-type-def type-id='type-id-129' size-in-bits='64' id='type-id-130'/>
-    <!-- dbus_int32_t* -->
-    <pointer-type-def type-id='type-id-81' size-in-bits='64' id='type-id-131'/>
-    <!-- typedef DBusHandlerResult (DBusConnection*, DBusMessage*, void*)* -->
-    <pointer-type-def type-id='type-id-132' size-in-bits='64' id='type-id-100'/>
-    <!-- typedef dbus_bool_t (DBusConnection*, const char*, void*)* -->
-    <pointer-type-def type-id='type-id-133' size-in-bits='64' id='type-id-104'/>
-    <!-- typedef dbus_bool_t (DBusConnection*, unsigned long int, void*)* -->
-    <pointer-type-def type-id='type-id-134' size-in-bits='64' id='type-id-106'/>
-    <!-- typedef dbus_bool_t (DBusTimeout*, void*)* -->
-    <pointer-type-def type-id='type-id-135' size-in-bits='64' id='type-id-108'/>
-    <!-- typedef dbus_bool_t (DBusWatch*, void*)* -->
-    <pointer-type-def type-id='type-id-136' size-in-bits='64' id='type-id-114'/>
-    <!-- unsigned long int* -->
-    <pointer-type-def type-id='type-id-43' size-in-bits='64' id='type-id-137'/>
-    <!-- void (DBusConnection*, typedef DBusDispatchStatus, void*)* -->
-    <pointer-type-def type-id='type-id-76' size-in-bits='64' id='type-id-62'/>
-    <!-- void (DBusConnection*, void*)* -->
-    <pointer-type-def type-id='type-id-138' size-in-bits='64' id='type-id-99'/>
-    <!-- void (DBusTimeout*, void*)* -->
-    <pointer-type-def type-id='type-id-139' size-in-bits='64' id='type-id-111'/>
-    <!-- void (DBusWatch*, void*)* -->
-    <pointer-type-def type-id='type-id-140' size-in-bits='64' id='type-id-117'/>
-    <!-- void (void*)* -->
-    <pointer-type-def type-id='type-id-77' size-in-bits='64' id='type-id-63'/>
-    <!-- void** -->
-    <pointer-type-def type-id='type-id-10' size-in-bits='64' id='type-id-141'/>
-    <!-- volatile dbus_int32_t -->
-    <qualified-type-def type-id='type-id-81' volatile='yes' id='type-id-64'/>
-    <!-- void dbus_connection_set_change_sigpipe(dbus_bool_t) -->
-    <function-decl name='dbus_connection_set_change_sigpipe' mangled-name='dbus_connection_set_change_sigpipe' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6043' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_change_sigpipe'>
-      <!-- parameter of type 'typedef dbus_bool_t' -->
-      <parameter type-id='type-id-17' name='will_modify_sigpipe' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6043' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void* dbus_connection_get_data(DBusConnection*, dbus_int32_t) -->
-    <function-decl name='dbus_connection_get_data' mangled-name='dbus_connection_get_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6017' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_data'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6017' column='1'/>
-      <!-- parameter of type 'typedef dbus_int32_t' -->
-      <parameter type-id='type-id-81' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6018' column='1'/>
-      <!-- void* -->
-      <return type-id='type-id-10'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_set_data(DBusConnection*, dbus_int32_t, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_connection_set_data' mangled-name='dbus_connection_set_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5968' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_data'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5968' column='1'/>
-      <!-- parameter of type 'typedef dbus_int32_t' -->
-      <parameter type-id='type-id-81' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5969' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5970' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_func' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5971' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_connection_free_data_slot(dbus_int32_t*) -->
-    <function-decl name='dbus_connection_free_data_slot' mangled-name='dbus_connection_free_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5938' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_free_data_slot'>
-      <!-- parameter of type 'dbus_int32_t*' -->
-      <parameter type-id='type-id-131' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5938' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_allocate_data_slot(dbus_int32_t*) -->
-    <function-decl name='dbus_connection_allocate_data_slot' mangled-name='dbus_connection_allocate_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5920' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_allocate_data_slot'>
-      <!-- parameter of type 'dbus_int32_t*' -->
-      <parameter type-id='type-id-131' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5920' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_list_registered(DBusConnection*, const char*, char***) -->
-    <function-decl name='dbus_connection_list_registered' mangled-name='dbus_connection_list_registered' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5878' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_list_registered'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5878' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='parent_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5879' column='1'/>
-      <!-- parameter of type 'char***' -->
-      <parameter type-id='type-id-128' name='child_entries' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5880' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_unregister_object_path(DBusConnection*, const char*) -->
-    <function-decl name='dbus_connection_unregister_object_path' mangled-name='dbus_connection_unregister_object_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5809' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_unregister_object_path'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5809' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5810' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- DBusConnection* dbus_connection_ref(DBusConnection*) -->
-    <function-decl name='dbus_connection_ref' mangled-name='dbus_connection_ref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2681' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_ref'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2681' column='1'/>
-      <!-- DBusConnection* -->
-      <return type-id='type-id-47'/>
-    </function-decl>
-    <!-- long int dbus_connection_get_outgoing_unix_fds(DBusConnection*) -->
-    <function-decl name='dbus_connection_get_outgoing_unix_fds' mangled-name='dbus_connection_get_outgoing_unix_fds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6296' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_outgoing_unix_fds'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6296' column='1'/>
-      <!-- long int -->
-      <return type-id='type-id-80'/>
-    </function-decl>
-    <!-- long int dbus_connection_get_outgoing_size(DBusConnection*) -->
-    <function-decl name='dbus_connection_get_outgoing_size' mangled-name='dbus_connection_get_outgoing_size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6235' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_outgoing_size'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6235' column='1'/>
-      <!-- long int -->
-      <return type-id='type-id-80'/>
-    </function-decl>
-    <!-- long int dbus_connection_get_max_received_unix_fds(DBusConnection*) -->
-    <function-decl name='dbus_connection_get_max_received_unix_fds' mangled-name='dbus_connection_get_max_received_unix_fds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6212' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_max_received_unix_fds'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6212' column='1'/>
-      <!-- long int -->
-      <return type-id='type-id-80'/>
-    </function-decl>
-    <!-- void dbus_connection_set_max_received_unix_fds(DBusConnection*, long int) -->
-    <function-decl name='dbus_connection_set_max_received_unix_fds' mangled-name='dbus_connection_set_max_received_unix_fds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6194' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_max_received_unix_fds'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6194' column='1'/>
-      <!-- parameter of type 'long int' -->
-      <parameter type-id='type-id-80' name='n' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6195' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- long int dbus_connection_get_max_received_size(DBusConnection*) -->
-    <function-decl name='dbus_connection_get_max_received_size' mangled-name='dbus_connection_get_max_received_size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6170' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_max_received_size'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6170' column='1'/>
-      <!-- long int -->
-      <return type-id='type-id-80'/>
-    </function-decl>
-    <!-- void dbus_connection_set_max_received_size(DBusConnection*, long int) -->
-    <function-decl name='dbus_connection_set_max_received_size' mangled-name='dbus_connection_set_max_received_size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6152' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_max_received_size'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6152' column='1'/>
-      <!-- parameter of type 'long int' -->
-      <parameter type-id='type-id-80' name='size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6153' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- long int dbus_connection_get_max_message_unix_fds(DBusConnection*) -->
-    <function-decl name='dbus_connection_get_max_message_unix_fds' mangled-name='dbus_connection_get_max_message_unix_fds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6114' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_max_message_unix_fds'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6114' column='1'/>
-      <!-- long int -->
-      <return type-id='type-id-80'/>
-    </function-decl>
-    <!-- void dbus_connection_set_max_message_unix_fds(DBusConnection*, long int) -->
-    <function-decl name='dbus_connection_set_max_message_unix_fds' mangled-name='dbus_connection_set_max_message_unix_fds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6096' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_max_message_unix_fds'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6096' column='1'/>
-      <!-- parameter of type 'long int' -->
-      <parameter type-id='type-id-80' name='n' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6097' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- long int dbus_connection_get_max_message_size(DBusConnection*) -->
-    <function-decl name='dbus_connection_get_max_message_size' mangled-name='dbus_connection_get_max_message_size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6075' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_max_message_size'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6075' column='1'/>
-      <!-- long int -->
-      <return type-id='type-id-80'/>
-    </function-decl>
-    <!-- void dbus_connection_set_max_message_size(DBusConnection*, long int) -->
-    <function-decl name='dbus_connection_set_max_message_size' mangled-name='dbus_connection_set_max_message_size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6057' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_max_message_size'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6057' column='1'/>
-      <!-- parameter of type 'long int' -->
-      <parameter type-id='type-id-80' name='size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6058' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_get_object_path_data(DBusConnection*, const char*, void**) -->
-    <function-decl name='dbus_connection_get_object_path_data' mangled-name='dbus_connection_get_object_path_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5841' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_object_path_data'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5841' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5842' column='1'/>
-      <!-- parameter of type 'void**' -->
-      <parameter type-id='type-id-141' name='data_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5843' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_register_fallback(DBusConnection*, const char*, const DBusObjectPathVTable*, void*) -->
-    <function-decl name='dbus_connection_register_fallback' mangled-name='dbus_connection_register_fallback' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5774' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_register_fallback'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5774' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5775' column='1'/>
-      <!-- parameter of type 'const DBusObjectPathVTable*' -->
-      <parameter type-id='type-id-130' name='vtable' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5776' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5777' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_try_register_fallback(DBusConnection*, const char*, const DBusObjectPathVTable*, void*, DBusError*) -->
-    <function-decl name='dbus_connection_try_register_fallback' mangled-name='dbus_connection_try_register_fallback' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5742' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_try_register_fallback'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5742' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5743' column='1'/>
-      <!-- parameter of type 'const DBusObjectPathVTable*' -->
-      <parameter type-id='type-id-130' name='vtable' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5744' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5745' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5746' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_register_object_path(DBusConnection*, const char*, const DBusObjectPathVTable*, void*) -->
-    <function-decl name='dbus_connection_register_object_path' mangled-name='dbus_connection_register_object_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5702' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_register_object_path'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5702' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5703' column='1'/>
-      <!-- parameter of type 'const DBusObjectPathVTable*' -->
-      <parameter type-id='type-id-130' name='vtable' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5704' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5705' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_try_register_object_path(DBusConnection*, const char*, const DBusObjectPathVTable*, void*, DBusError*) -->
-    <function-decl name='dbus_connection_try_register_object_path' mangled-name='dbus_connection_try_register_object_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5672' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_try_register_object_path'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5672' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5673' column='1'/>
-      <!-- parameter of type 'const DBusObjectPathVTable*' -->
-      <parameter type-id='type-id-130' name='vtable' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5674' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5675' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5676' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_connection_remove_filter(DBusConnection*, DBusHandleMessageFunction, void*) -->
-    <function-decl name='dbus_connection_remove_filter' mangled-name='dbus_connection_remove_filter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5563' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_remove_filter'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5563' column='1'/>
-      <!-- parameter of type 'typedef DBusHandleMessageFunction' -->
-      <parameter type-id='type-id-103' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5564' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5565' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_add_filter(DBusConnection*, DBusHandleMessageFunction, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_connection_add_filter' mangled-name='dbus_connection_add_filter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5511' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_add_filter'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5511' column='1'/>
-      <!-- parameter of type 'typedef DBusHandleMessageFunction' -->
-      <parameter type-id='type-id-103' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5512' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5513' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5514' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_connection_set_route_peer_messages(DBusConnection*, dbus_bool_t) -->
-    <function-decl name='dbus_connection_set_route_peer_messages' mangled-name='dbus_connection_set_route_peer_messages' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5479' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_route_peer_messages'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5479' column='1'/>
-      <!-- parameter of type 'typedef dbus_bool_t' -->
-      <parameter type-id='type-id-17' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5480' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void dbus_connection_set_allow_anonymous(DBusConnection*, dbus_bool_t) -->
-    <function-decl name='dbus_connection_set_allow_anonymous' mangled-name='dbus_connection_set_allow_anonymous' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5451' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_allow_anonymous'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5451' column='1'/>
-      <!-- parameter of type 'typedef dbus_bool_t' -->
-      <parameter type-id='type-id-17' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5452' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void dbus_connection_set_windows_user_function(DBusConnection*, DBusAllowWindowsUserFunction, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_connection_set_windows_user_function' mangled-name='dbus_connection_set_windows_user_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5404' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_windows_user_function'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5404' column='1'/>
-      <!-- parameter of type 'typedef DBusAllowWindowsUserFunction' -->
-      <parameter type-id='type-id-105' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5405' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5406' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5407' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_get_windows_user(DBusConnection*, char**) -->
-    <function-decl name='dbus_connection_get_windows_user' mangled-name='dbus_connection_get_windows_user' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5357' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_windows_user'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5357' column='1'/>
-      <!-- parameter of type 'char**' -->
-      <parameter type-id='type-id-127' name='windows_sid_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5358' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_connection_set_unix_user_function(DBusConnection*, DBusAllowUnixUserFunction, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_connection_set_unix_user_function' mangled-name='dbus_connection_set_unix_user_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5305' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_unix_user_function'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5305' column='1'/>
-      <!-- parameter of type 'typedef DBusAllowUnixUserFunction' -->
-      <parameter type-id='type-id-107' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5306' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5307' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5308' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_get_adt_audit_session_data(DBusConnection*, void**, dbus_int32_t*) -->
-    <function-decl name='dbus_connection_get_adt_audit_session_data' mangled-name='dbus_connection_get_adt_audit_session_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5259' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_adt_audit_session_data'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5259' column='1'/>
-      <!-- parameter of type 'void**' -->
-      <parameter type-id='type-id-141' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5260' column='1'/>
-      <!-- parameter of type 'dbus_int32_t*' -->
-      <parameter type-id='type-id-131' name='data_size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5261' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_get_unix_process_id(DBusConnection*, unsigned long int*) -->
-    <function-decl name='dbus_connection_get_unix_process_id' mangled-name='dbus_connection_get_unix_process_id' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5226' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_unix_process_id'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5226' column='1'/>
-      <!-- parameter of type 'unsigned long int*' -->
-      <parameter type-id='type-id-137' name='pid' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5227' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_get_unix_user(DBusConnection*, unsigned long int*) -->
-    <function-decl name='dbus_connection_get_unix_user' mangled-name='dbus_connection_get_unix_user' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5190' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_unix_user'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5190' column='1'/>
-      <!-- parameter of type 'unsigned long int*' -->
-      <parameter type-id='type-id-137' name='uid' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5191' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_get_socket(DBusConnection*, int*) -->
-    <function-decl name='dbus_connection_get_socket' mangled-name='dbus_connection_get_socket' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5148' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_socket'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5148' column='1'/>
-      <!-- parameter of type 'int*' -->
-      <parameter type-id='type-id-24' name='fd' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5149' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_get_unix_fd(DBusConnection*, int*) -->
-    <function-decl name='dbus_connection_get_unix_fd' mangled-name='dbus_connection_get_unix_fd' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5118' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_unix_fd'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5118' column='1'/>
-      <!-- parameter of type 'int*' -->
-      <parameter type-id='type-id-24' name='fd' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5119' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_connection_set_dispatch_status_function(DBusConnection*, DBusDispatchStatusFunction, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_connection_set_dispatch_status_function' mangled-name='dbus_connection_set_dispatch_status_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5073' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_dispatch_status_function'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5073' column='1'/>
-      <!-- parameter of type 'typedef DBusDispatchStatusFunction' -->
-      <parameter type-id='type-id-39' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5074' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5075' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5076' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void dbus_connection_set_wakeup_main_function(DBusConnection*, DBusWakeupMainFunction, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_connection_set_wakeup_main_function' mangled-name='dbus_connection_set_wakeup_main_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5027' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_wakeup_main_function'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5027' column='1'/>
-      <!-- parameter of type 'typedef DBusWakeupMainFunction' -->
-      <parameter type-id='type-id-37' name='wakeup_main_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5028' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5029' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5030' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_set_timeout_functions(DBusConnection*, DBusAddTimeoutFunction, DBusRemoveTimeoutFunction, DBusTimeoutToggledFunction, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_connection_set_timeout_functions' mangled-name='dbus_connection_set_timeout_functions' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4989' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_timeout_functions'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4989' column='1'/>
-      <!-- parameter of type 'typedef DBusAddTimeoutFunction' -->
-      <parameter type-id='type-id-109' name='add_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4990' column='1'/>
-      <!-- parameter of type 'typedef DBusRemoveTimeoutFunction' -->
-      <parameter type-id='type-id-112' name='remove_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4991' column='1'/>
-      <!-- parameter of type 'typedef DBusTimeoutToggledFunction' -->
-      <parameter type-id='type-id-113' name='toggled_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4992' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4993' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4994' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_set_watch_functions(DBusConnection*, DBusAddWatchFunction, DBusRemoveWatchFunction, DBusWatchToggledFunction, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_connection_set_watch_functions' mangled-name='dbus_connection_set_watch_functions' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4926' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_watch_functions'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4926' column='1'/>
-      <!-- parameter of type 'typedef DBusAddWatchFunction' -->
-      <parameter type-id='type-id-115' name='add_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4927' column='1'/>
-      <!-- parameter of type 'typedef DBusRemoveWatchFunction' -->
-      <parameter type-id='type-id-118' name='remove_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4928' column='1'/>
-      <!-- parameter of type 'typedef DBusWatchToggledFunction' -->
-      <parameter type-id='type-id-119' name='toggled_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4929' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4930' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4931' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_connection_set_exit_on_disconnect(DBusConnection*, dbus_bool_t) -->
-    <function-decl name='dbus_connection_set_exit_on_disconnect' mangled-name='dbus_connection_set_exit_on_disconnect' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3145' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_exit_on_disconnect'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3145' column='1'/>
-      <!-- parameter of type 'typedef dbus_bool_t' -->
-      <parameter type-id='type-id-17' name='exit_on_disconnect' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3146' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_get_is_authenticated(DBusConnection*) -->
-    <function-decl name='dbus_connection_get_is_authenticated' mangled-name='dbus_connection_get_is_authenticated' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2995' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_is_authenticated'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2995' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
+    <class-decl name='DBusWatchList' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-115'/>
     <!-- dbus_bool_t dbus_connection_has_messages_to_send(DBusConnection*) -->
     <function-decl name='dbus_connection_has_messages_to_send' mangled-name='dbus_connection_has_messages_to_send' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='588' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_has_messages_to_send'>
       <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='588' column='1'/>
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='588' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- DBusPreallocatedSend* dbus_connection_preallocate_send(DBusConnection*) -->
-    <function-decl name='dbus_connection_preallocate_send' mangled-name='dbus_connection_preallocate_send' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3165' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_preallocate_send'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3165' column='1'/>
-      <!-- DBusPreallocatedSend* -->
-      <return type-id='type-id-125'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_get_is_connected(DBusConnection*) -->
-    <function-decl name='dbus_connection_get_is_connected' mangled-name='dbus_connection_get_is_connected' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2973' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_is_connected'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2973' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_connection_free_preallocated_send(DBusConnection*, DBusPreallocatedSend*) -->
-    <function-decl name='dbus_connection_free_preallocated_send' mangled-name='dbus_connection_free_preallocated_send' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3191' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_free_preallocated_send'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3191' column='1'/>
-      <!-- parameter of type 'DBusPreallocatedSend*' -->
-      <parameter type-id='type-id-125' name='preallocated' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3192' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_can_send_type(DBusConnection*, int) -->
-    <function-decl name='dbus_connection_can_send_type' mangled-name='dbus_connection_can_send_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3105' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_can_send_type'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3105' column='1'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3106' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- char* dbus_connection_get_server_id(DBusConnection*) -->
-    <function-decl name='dbus_connection_get_server_id' mangled-name='dbus_connection_get_server_id' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3074' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_server_id'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3074' column='1'/>
-      <!-- char* -->
-      <return type-id='type-id-22'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_get_is_anonymous(DBusConnection*) -->
-    <function-decl name='dbus_connection_get_is_anonymous' mangled-name='dbus_connection_get_is_anonymous' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3029' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_is_anonymous'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3029' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_connection_unref(DBusConnection*) -->
-    <function-decl name='dbus_connection_unref' mangled-name='dbus_connection_unref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2817' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_unref'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2817' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- DBusDispatchStatus dbus_connection_get_dispatch_status(DBusConnection*) -->
-    <function-decl name='dbus_connection_get_dispatch_status' mangled-name='dbus_connection_get_dispatch_status' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4378' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_dispatch_status'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4378' column='1'/>
-      <!-- typedef DBusDispatchStatus -->
-      <return type-id='type-id-40'/>
-    </function-decl>
-    <!-- DBusMessage* dbus_connection_borrow_message(DBusConnection*) -->
-    <function-decl name='dbus_connection_borrow_message' mangled-name='dbus_connection_borrow_message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3850' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_borrow_message'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3850' column='1'/>
-      <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
-    </function-decl>
-    <!-- DBusMessage* dbus_connection_pop_message(DBusConnection*) -->
-    <function-decl name='dbus_connection_pop_message' mangled-name='dbus_connection_pop_message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4091' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_pop_message'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4091' column='1'/>
-      <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
-    </function-decl>
-    <!-- void dbus_connection_steal_borrowed_message(DBusConnection*, DBusMessage*) -->
-    <function-decl name='dbus_connection_steal_borrowed_message' mangled-name='dbus_connection_steal_borrowed_message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3935' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_steal_borrowed_message'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3935' column='1'/>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3936' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void dbus_connection_return_message(DBusConnection*, DBusMessage*) -->
-    <function-decl name='dbus_connection_return_message' mangled-name='dbus_connection_return_message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3901' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_return_message'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3901' column='1'/>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3902' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void dbus_connection_flush(DBusConnection*) -->
-    <function-decl name='dbus_connection_flush' mangled-name='dbus_connection_flush' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3641' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_flush'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3641' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void dbus_connection_send_preallocated(DBusConnection*, DBusPreallocatedSend*, DBusMessage*, dbus_uint32_t*) -->
-    <function-decl name='dbus_connection_send_preallocated' mangled-name='dbus_connection_send_preallocated' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3217' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_send_preallocated'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3217' column='1'/>
-      <!-- parameter of type 'DBusPreallocatedSend*' -->
-      <parameter type-id='type-id-125' name='preallocated' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3218' column='1'/>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3219' column='1'/>
-      <!-- parameter of type 'dbus_uint32_t*' -->
-      <parameter type-id='type-id-48' name='client_serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3220' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_send(DBusConnection*, DBusMessage*, dbus_uint32_t*) -->
-    <function-decl name='dbus_connection_send' mangled-name='dbus_connection_send' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3302' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_send'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3302' column='1'/>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3303' column='1'/>
-      <!-- parameter of type 'dbus_uint32_t*' -->
-      <parameter type-id='type-id-48' name='serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3304' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_connection_close(DBusConnection*) -->
-    <function-decl name='dbus_connection_close' mangled-name='dbus_connection_close' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2932' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_close'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2932' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- DBusConnection* dbus_connection_open_private(const char*, DBusError*) -->
-    <function-decl name='dbus_connection_open_private' mangled-name='dbus_connection_open_private' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2659' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_open_private'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='address' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2659' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2660' column='1'/>
-      <!-- DBusConnection* -->
-      <return type-id='type-id-47'/>
+      <return type-id='type-id-13'/>
     </function-decl>
     <!-- DBusConnection* dbus_connection_open(const char*, DBusError*) -->
     <function-decl name='dbus_connection_open' mangled-name='dbus_connection_open' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2616' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_open'>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='address' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2616' column='1'/>
+      <parameter type-id='type-id-7' name='address' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2616' column='1'/>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2617' column='1'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2617' column='1'/>
       <!-- DBusConnection* -->
-      <return type-id='type-id-47'/>
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <!-- DBusConnection* dbus_connection_open_private(const char*, DBusError*) -->
+    <function-decl name='dbus_connection_open_private' mangled-name='dbus_connection_open_private' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2659' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_open_private'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='address' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2659' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2660' column='1'/>
+      <!-- DBusConnection* -->
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <!-- DBusConnection* dbus_connection_ref(DBusConnection*) -->
+    <function-decl name='dbus_connection_ref' mangled-name='dbus_connection_ref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2681' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_ref'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2681' column='1'/>
+      <!-- DBusConnection* -->
+      <return type-id='type-id-31'/>
+    </function-decl>
+    <!-- void dbus_connection_unref(DBusConnection*) -->
+    <function-decl name='dbus_connection_unref' mangled-name='dbus_connection_unref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2817' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_unref'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2817' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- void dbus_connection_close(DBusConnection*) -->
+    <function-decl name='dbus_connection_close' mangled-name='dbus_connection_close' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2932' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_close'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2932' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_get_is_connected(DBusConnection*) -->
+    <function-decl name='dbus_connection_get_is_connected' mangled-name='dbus_connection_get_is_connected' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2973' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_is_connected'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2973' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_get_is_authenticated(DBusConnection*) -->
+    <function-decl name='dbus_connection_get_is_authenticated' mangled-name='dbus_connection_get_is_authenticated' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2995' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_is_authenticated'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='2995' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_get_is_anonymous(DBusConnection*) -->
+    <function-decl name='dbus_connection_get_is_anonymous' mangled-name='dbus_connection_get_is_anonymous' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3029' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_is_anonymous'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3029' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- char* dbus_connection_get_server_id(DBusConnection*) -->
+    <function-decl name='dbus_connection_get_server_id' mangled-name='dbus_connection_get_server_id' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3074' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_server_id'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3074' column='1'/>
+      <!-- char* -->
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_can_send_type(DBusConnection*, int) -->
+    <function-decl name='dbus_connection_can_send_type' mangled-name='dbus_connection_can_send_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3105' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_can_send_type'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3105' column='1'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3106' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_connection_set_exit_on_disconnect(DBusConnection*, dbus_bool_t) -->
+    <function-decl name='dbus_connection_set_exit_on_disconnect' mangled-name='dbus_connection_set_exit_on_disconnect' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3145' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_exit_on_disconnect'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3145' column='1'/>
+      <!-- parameter of type 'typedef dbus_bool_t' -->
+      <parameter type-id='type-id-13' name='exit_on_disconnect' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3146' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- DBusPreallocatedSend* dbus_connection_preallocate_send(DBusConnection*) -->
+    <function-decl name='dbus_connection_preallocate_send' mangled-name='dbus_connection_preallocate_send' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3165' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_preallocate_send'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3165' column='1'/>
+      <!-- DBusPreallocatedSend* -->
+      <return type-id='type-id-119'/>
+    </function-decl>
+    <!-- void dbus_connection_free_preallocated_send(DBusConnection*, DBusPreallocatedSend*) -->
+    <function-decl name='dbus_connection_free_preallocated_send' mangled-name='dbus_connection_free_preallocated_send' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3191' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_free_preallocated_send'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3191' column='1'/>
+      <!-- parameter of type 'DBusPreallocatedSend*' -->
+      <parameter type-id='type-id-119' name='preallocated' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3192' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- void dbus_connection_send_preallocated(DBusConnection*, DBusPreallocatedSend*, DBusMessage*, dbus_uint32_t*) -->
+    <function-decl name='dbus_connection_send_preallocated' mangled-name='dbus_connection_send_preallocated' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3217' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_send_preallocated'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3217' column='1'/>
+      <!-- parameter of type 'DBusPreallocatedSend*' -->
+      <parameter type-id='type-id-119' name='preallocated' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3218' column='1'/>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3219' column='1'/>
+      <!-- parameter of type 'dbus_uint32_t*' -->
+      <parameter type-id='type-id-32' name='client_serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3220' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_send(DBusConnection*, DBusMessage*, dbus_uint32_t*) -->
+    <function-decl name='dbus_connection_send' mangled-name='dbus_connection_send' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3302' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_send'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3302' column='1'/>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3303' column='1'/>
+      <!-- parameter of type 'dbus_uint32_t*' -->
+      <parameter type-id='type-id-32' name='serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3304' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
     </function-decl>
     <!-- dbus_bool_t dbus_connection_send_with_reply(DBusConnection*, DBusMessage*, DBusPendingCall**, int) -->
     <function-decl name='dbus_connection_send_with_reply' mangled-name='dbus_connection_send_with_reply' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3399' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_send_with_reply'>
       <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3399' column='1'/>
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3399' column='1'/>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3400' column='1'/>
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3400' column='1'/>
       <!-- parameter of type 'DBusPendingCall**' -->
-      <parameter type-id='type-id-124' name='pending_return' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3401' column='1'/>
+      <parameter type-id='type-id-118' name='pending_return' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3401' column='1'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-2' name='timeout_milliseconds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3402' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-decl>
     <!-- DBusMessage* dbus_connection_send_with_reply_and_block(DBusConnection*, DBusMessage*, int, DBusError*) -->
     <function-decl name='dbus_connection_send_with_reply_and_block' mangled-name='dbus_connection_send_with_reply_and_block' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3535' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_send_with_reply_and_block'>
       <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3535' column='1'/>
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3535' column='1'/>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3536' column='1'/>
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3536' column='1'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-2' name='timeout_milliseconds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3537' column='1'/>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3538' column='1'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3538' column='1'/>
       <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
+      <return type-id='type-id-37'/>
     </function-decl>
-    <!-- DBusDispatchStatus dbus_connection_dispatch(DBusConnection*) -->
-    <function-decl name='dbus_connection_dispatch' mangled-name='dbus_connection_dispatch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4549' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_dispatch'>
+    <!-- void dbus_connection_flush(DBusConnection*) -->
+    <function-decl name='dbus_connection_flush' mangled-name='dbus_connection_flush' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3641' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_flush'>
       <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4549' column='1'/>
-      <!-- typedef DBusDispatchStatus -->
-      <return type-id='type-id-40'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_connection_read_write(DBusConnection*, int) -->
-    <function-decl name='dbus_connection_read_write' mangled-name='dbus_connection_read_write' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3801' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_read_write'>
-      <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3801' column='1'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='timeout_milliseconds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3802' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3641' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
     </function-decl>
     <!-- dbus_bool_t dbus_connection_read_write_dispatch(DBusConnection*, int) -->
     <function-decl name='dbus_connection_read_write_dispatch' mangled-name='dbus_connection_read_write_dispatch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3769' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_read_write_dispatch'>
       <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3769' column='1'/>
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3769' column='1'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-2' name='timeout_milliseconds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3770' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_read_write(DBusConnection*, int) -->
+    <function-decl name='dbus_connection_read_write' mangled-name='dbus_connection_read_write' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3801' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_read_write'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3801' column='1'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='timeout_milliseconds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3802' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- DBusMessage* dbus_connection_borrow_message(DBusConnection*) -->
+    <function-decl name='dbus_connection_borrow_message' mangled-name='dbus_connection_borrow_message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3850' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_borrow_message'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3850' column='1'/>
+      <!-- DBusMessage* -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- void dbus_connection_return_message(DBusConnection*, DBusMessage*) -->
+    <function-decl name='dbus_connection_return_message' mangled-name='dbus_connection_return_message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3901' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_return_message'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3901' column='1'/>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3902' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- void dbus_connection_steal_borrowed_message(DBusConnection*, DBusMessage*) -->
+    <function-decl name='dbus_connection_steal_borrowed_message' mangled-name='dbus_connection_steal_borrowed_message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3935' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_steal_borrowed_message'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3935' column='1'/>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='3936' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- DBusMessage* dbus_connection_pop_message(DBusConnection*) -->
+    <function-decl name='dbus_connection_pop_message' mangled-name='dbus_connection_pop_message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4091' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_pop_message'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4091' column='1'/>
+      <!-- DBusMessage* -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- DBusDispatchStatus dbus_connection_get_dispatch_status(DBusConnection*) -->
+    <function-decl name='dbus_connection_get_dispatch_status' mangled-name='dbus_connection_get_dispatch_status' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4378' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_dispatch_status'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4378' column='1'/>
+      <!-- typedef DBusDispatchStatus -->
+      <return type-id='type-id-47'/>
+    </function-decl>
+    <!-- DBusDispatchStatus dbus_connection_dispatch(DBusConnection*) -->
+    <function-decl name='dbus_connection_dispatch' mangled-name='dbus_connection_dispatch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4549' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_dispatch'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4549' column='1'/>
+      <!-- typedef DBusDispatchStatus -->
+      <return type-id='type-id-47'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_set_watch_functions(DBusConnection*, DBusAddWatchFunction, DBusRemoveWatchFunction, DBusWatchToggledFunction, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_connection_set_watch_functions' mangled-name='dbus_connection_set_watch_functions' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4926' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_watch_functions'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4926' column='1'/>
+      <!-- parameter of type 'typedef DBusAddWatchFunction' -->
+      <parameter type-id='type-id-86' name='add_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4927' column='1'/>
+      <!-- parameter of type 'typedef DBusRemoveWatchFunction' -->
+      <parameter type-id='type-id-89' name='remove_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4928' column='1'/>
+      <!-- parameter of type 'typedef DBusWatchToggledFunction' -->
+      <parameter type-id='type-id-88' name='toggled_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4929' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4930' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4931' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_set_timeout_functions(DBusConnection*, DBusAddTimeoutFunction, DBusRemoveTimeoutFunction, DBusTimeoutToggledFunction, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_connection_set_timeout_functions' mangled-name='dbus_connection_set_timeout_functions' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4989' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_timeout_functions'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4989' column='1'/>
+      <!-- parameter of type 'typedef DBusAddTimeoutFunction' -->
+      <parameter type-id='type-id-91' name='add_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4990' column='1'/>
+      <!-- parameter of type 'typedef DBusRemoveTimeoutFunction' -->
+      <parameter type-id='type-id-94' name='remove_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4991' column='1'/>
+      <!-- parameter of type 'typedef DBusTimeoutToggledFunction' -->
+      <parameter type-id='type-id-93' name='toggled_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4992' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4993' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='4994' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_connection_set_wakeup_main_function(DBusConnection*, DBusWakeupMainFunction, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_connection_set_wakeup_main_function' mangled-name='dbus_connection_set_wakeup_main_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5027' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_wakeup_main_function'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5027' column='1'/>
+      <!-- parameter of type 'typedef DBusWakeupMainFunction' -->
+      <parameter type-id='type-id-44' name='wakeup_main_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5028' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5029' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5030' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- void dbus_connection_set_dispatch_status_function(DBusConnection*, DBusDispatchStatusFunction, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_connection_set_dispatch_status_function' mangled-name='dbus_connection_set_dispatch_status_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5073' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_dispatch_status_function'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5073' column='1'/>
+      <!-- parameter of type 'typedef DBusDispatchStatusFunction' -->
+      <parameter type-id='type-id-46' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5074' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5075' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5076' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_get_unix_fd(DBusConnection*, int*) -->
+    <function-decl name='dbus_connection_get_unix_fd' mangled-name='dbus_connection_get_unix_fd' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5118' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_unix_fd'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5118' column='1'/>
+      <!-- parameter of type 'int*' -->
+      <parameter type-id='type-id-23' name='fd' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5119' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_get_socket(DBusConnection*, int*) -->
+    <function-decl name='dbus_connection_get_socket' mangled-name='dbus_connection_get_socket' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5148' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_socket'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5148' column='1'/>
+      <!-- parameter of type 'int*' -->
+      <parameter type-id='type-id-23' name='fd' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5149' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_get_unix_user(DBusConnection*, unsigned long int*) -->
+    <function-decl name='dbus_connection_get_unix_user' mangled-name='dbus_connection_get_unix_user' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5190' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_unix_user'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5190' column='1'/>
+      <!-- parameter of type 'unsigned long int*' -->
+      <parameter type-id='type-id-132' name='uid' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5191' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_get_unix_process_id(DBusConnection*, unsigned long int*) -->
+    <function-decl name='dbus_connection_get_unix_process_id' mangled-name='dbus_connection_get_unix_process_id' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5226' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_unix_process_id'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5226' column='1'/>
+      <!-- parameter of type 'unsigned long int*' -->
+      <parameter type-id='type-id-132' name='pid' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5227' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_get_adt_audit_session_data(DBusConnection*, void**, dbus_int32_t*) -->
+    <function-decl name='dbus_connection_get_adt_audit_session_data' mangled-name='dbus_connection_get_adt_audit_session_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5259' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_adt_audit_session_data'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5259' column='1'/>
+      <!-- parameter of type 'void**' -->
+      <parameter type-id='type-id-138' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5260' column='1'/>
+      <!-- parameter of type 'dbus_int32_t*' -->
+      <parameter type-id='type-id-126' name='data_size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5261' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_connection_set_unix_user_function(DBusConnection*, DBusAllowUnixUserFunction, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_connection_set_unix_user_function' mangled-name='dbus_connection_set_unix_user_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5305' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_unix_user_function'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5305' column='1'/>
+      <!-- parameter of type 'typedef DBusAllowUnixUserFunction' -->
+      <parameter type-id='type-id-97' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5306' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5307' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5308' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_get_windows_user(DBusConnection*, char**) -->
+    <function-decl name='dbus_connection_get_windows_user' mangled-name='dbus_connection_get_windows_user' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5357' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_windows_user'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5357' column='1'/>
+      <!-- parameter of type 'char**' -->
+      <parameter type-id='type-id-122' name='windows_sid_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5358' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_connection_set_windows_user_function(DBusConnection*, DBusAllowWindowsUserFunction, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_connection_set_windows_user_function' mangled-name='dbus_connection_set_windows_user_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5404' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_windows_user_function'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5404' column='1'/>
+      <!-- parameter of type 'typedef DBusAllowWindowsUserFunction' -->
+      <parameter type-id='type-id-99' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5405' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5406' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5407' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- void dbus_connection_set_allow_anonymous(DBusConnection*, dbus_bool_t) -->
+    <function-decl name='dbus_connection_set_allow_anonymous' mangled-name='dbus_connection_set_allow_anonymous' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5451' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_allow_anonymous'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5451' column='1'/>
+      <!-- parameter of type 'typedef dbus_bool_t' -->
+      <parameter type-id='type-id-13' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5452' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- void dbus_connection_set_route_peer_messages(DBusConnection*, dbus_bool_t) -->
+    <function-decl name='dbus_connection_set_route_peer_messages' mangled-name='dbus_connection_set_route_peer_messages' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5479' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_route_peer_messages'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5479' column='1'/>
+      <!-- parameter of type 'typedef dbus_bool_t' -->
+      <parameter type-id='type-id-13' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5480' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_add_filter(DBusConnection*, DBusHandleMessageFunction, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_connection_add_filter' mangled-name='dbus_connection_add_filter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5511' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_add_filter'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5511' column='1'/>
+      <!-- parameter of type 'typedef DBusHandleMessageFunction' -->
+      <parameter type-id='type-id-101' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5512' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5513' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5514' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_connection_remove_filter(DBusConnection*, DBusHandleMessageFunction, void*) -->
+    <function-decl name='dbus_connection_remove_filter' mangled-name='dbus_connection_remove_filter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5563' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_remove_filter'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5563' column='1'/>
+      <!-- parameter of type 'typedef DBusHandleMessageFunction' -->
+      <parameter type-id='type-id-101' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5564' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5565' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_try_register_object_path(DBusConnection*, const char*, const DBusObjectPathVTable*, void*, DBusError*) -->
+    <function-decl name='dbus_connection_try_register_object_path' mangled-name='dbus_connection_try_register_object_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5672' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_try_register_object_path'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5672' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5673' column='1'/>
+      <!-- parameter of type 'const DBusObjectPathVTable*' -->
+      <parameter type-id='type-id-125' name='vtable' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5674' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5675' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5676' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_register_object_path(DBusConnection*, const char*, const DBusObjectPathVTable*, void*) -->
+    <function-decl name='dbus_connection_register_object_path' mangled-name='dbus_connection_register_object_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5702' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_register_object_path'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5702' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5703' column='1'/>
+      <!-- parameter of type 'const DBusObjectPathVTable*' -->
+      <parameter type-id='type-id-125' name='vtable' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5704' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5705' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_try_register_fallback(DBusConnection*, const char*, const DBusObjectPathVTable*, void*, DBusError*) -->
+    <function-decl name='dbus_connection_try_register_fallback' mangled-name='dbus_connection_try_register_fallback' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5742' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_try_register_fallback'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5742' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5743' column='1'/>
+      <!-- parameter of type 'const DBusObjectPathVTable*' -->
+      <parameter type-id='type-id-125' name='vtable' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5744' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5745' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5746' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_register_fallback(DBusConnection*, const char*, const DBusObjectPathVTable*, void*) -->
+    <function-decl name='dbus_connection_register_fallback' mangled-name='dbus_connection_register_fallback' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5774' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_register_fallback'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5774' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5775' column='1'/>
+      <!-- parameter of type 'const DBusObjectPathVTable*' -->
+      <parameter type-id='type-id-125' name='vtable' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5776' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5777' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_unregister_object_path(DBusConnection*, const char*) -->
+    <function-decl name='dbus_connection_unregister_object_path' mangled-name='dbus_connection_unregister_object_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5809' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_unregister_object_path'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5809' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5810' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_get_object_path_data(DBusConnection*, const char*, void**) -->
+    <function-decl name='dbus_connection_get_object_path_data' mangled-name='dbus_connection_get_object_path_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5841' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_object_path_data'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5841' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5842' column='1'/>
+      <!-- parameter of type 'void**' -->
+      <parameter type-id='type-id-138' name='data_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5843' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_list_registered(DBusConnection*, const char*, char***) -->
+    <function-decl name='dbus_connection_list_registered' mangled-name='dbus_connection_list_registered' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5878' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_list_registered'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5878' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='parent_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5879' column='1'/>
+      <!-- parameter of type 'char***' -->
+      <parameter type-id='type-id-123' name='child_entries' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5880' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_allocate_data_slot(dbus_int32_t*) -->
+    <function-decl name='dbus_connection_allocate_data_slot' mangled-name='dbus_connection_allocate_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5920' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_allocate_data_slot'>
+      <!-- parameter of type 'dbus_int32_t*' -->
+      <parameter type-id='type-id-126' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5920' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_connection_free_data_slot(dbus_int32_t*) -->
+    <function-decl name='dbus_connection_free_data_slot' mangled-name='dbus_connection_free_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5938' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_free_data_slot'>
+      <!-- parameter of type 'dbus_int32_t*' -->
+      <parameter type-id='type-id-126' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5938' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_connection_set_data(DBusConnection*, dbus_int32_t, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_connection_set_data' mangled-name='dbus_connection_set_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5968' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_data'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5968' column='1'/>
+      <!-- parameter of type 'typedef dbus_int32_t' -->
+      <parameter type-id='type-id-53' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5969' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5970' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_func' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='5971' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void* dbus_connection_get_data(DBusConnection*, dbus_int32_t) -->
+    <function-decl name='dbus_connection_get_data' mangled-name='dbus_connection_get_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6017' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_data'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6017' column='1'/>
+      <!-- parameter of type 'typedef dbus_int32_t' -->
+      <parameter type-id='type-id-53' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6018' column='1'/>
+      <!-- void* -->
+      <return type-id='type-id-8'/>
+    </function-decl>
+    <!-- void dbus_connection_set_change_sigpipe(dbus_bool_t) -->
+    <function-decl name='dbus_connection_set_change_sigpipe' mangled-name='dbus_connection_set_change_sigpipe' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6043' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_change_sigpipe'>
+      <!-- parameter of type 'typedef dbus_bool_t' -->
+      <parameter type-id='type-id-13' name='will_modify_sigpipe' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6043' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- void dbus_connection_set_max_message_size(DBusConnection*, long int) -->
+    <function-decl name='dbus_connection_set_max_message_size' mangled-name='dbus_connection_set_max_message_size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6057' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_max_message_size'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6057' column='1'/>
+      <!-- parameter of type 'long int' -->
+      <parameter type-id='type-id-52' name='size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6058' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- long int dbus_connection_get_max_message_size(DBusConnection*) -->
+    <function-decl name='dbus_connection_get_max_message_size' mangled-name='dbus_connection_get_max_message_size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6075' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_max_message_size'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6075' column='1'/>
+      <!-- long int -->
+      <return type-id='type-id-52'/>
+    </function-decl>
+    <!-- void dbus_connection_set_max_message_unix_fds(DBusConnection*, long int) -->
+    <function-decl name='dbus_connection_set_max_message_unix_fds' mangled-name='dbus_connection_set_max_message_unix_fds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6096' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_max_message_unix_fds'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6096' column='1'/>
+      <!-- parameter of type 'long int' -->
+      <parameter type-id='type-id-52' name='n' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6097' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- long int dbus_connection_get_max_message_unix_fds(DBusConnection*) -->
+    <function-decl name='dbus_connection_get_max_message_unix_fds' mangled-name='dbus_connection_get_max_message_unix_fds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6114' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_max_message_unix_fds'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6114' column='1'/>
+      <!-- long int -->
+      <return type-id='type-id-52'/>
+    </function-decl>
+    <!-- void dbus_connection_set_max_received_size(DBusConnection*, long int) -->
+    <function-decl name='dbus_connection_set_max_received_size' mangled-name='dbus_connection_set_max_received_size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6152' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_max_received_size'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6152' column='1'/>
+      <!-- parameter of type 'long int' -->
+      <parameter type-id='type-id-52' name='size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6153' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- long int dbus_connection_get_max_received_size(DBusConnection*) -->
+    <function-decl name='dbus_connection_get_max_received_size' mangled-name='dbus_connection_get_max_received_size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6170' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_max_received_size'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6170' column='1'/>
+      <!-- long int -->
+      <return type-id='type-id-52'/>
+    </function-decl>
+    <!-- void dbus_connection_set_max_received_unix_fds(DBusConnection*, long int) -->
+    <function-decl name='dbus_connection_set_max_received_unix_fds' mangled-name='dbus_connection_set_max_received_unix_fds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6194' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_set_max_received_unix_fds'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6194' column='1'/>
+      <!-- parameter of type 'long int' -->
+      <parameter type-id='type-id-52' name='n' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6195' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- long int dbus_connection_get_max_received_unix_fds(DBusConnection*) -->
+    <function-decl name='dbus_connection_get_max_received_unix_fds' mangled-name='dbus_connection_get_max_received_unix_fds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6212' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_max_received_unix_fds'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6212' column='1'/>
+      <!-- long int -->
+      <return type-id='type-id-52'/>
+    </function-decl>
+    <!-- long int dbus_connection_get_outgoing_size(DBusConnection*) -->
+    <function-decl name='dbus_connection_get_outgoing_size' mangled-name='dbus_connection_get_outgoing_size' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6235' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_outgoing_size'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6235' column='1'/>
+      <!-- long int -->
+      <return type-id='type-id-52'/>
+    </function-decl>
+    <!-- long int dbus_connection_get_outgoing_unix_fds(DBusConnection*) -->
+    <function-decl name='dbus_connection_get_outgoing_unix_fds' mangled-name='dbus_connection_get_outgoing_unix_fds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6296' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_connection_get_outgoing_unix_fds'>
+      <!-- parameter of type 'DBusConnection*' -->
+      <parameter type-id='type-id-31' name='connection' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-connection.c' line='6296' column='1'/>
+      <!-- long int -->
+      <return type-id='type-id-52'/>
     </function-decl>
     <!-- DBusHandlerResult (DBusConnection*, DBusMessage*, void*) -->
-    <function-type size-in-bits='64' id='type-id-132'>
+    <function-type size-in-bits='64' id='type-id-127'>
       <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47'/>
+      <parameter type-id='type-id-31'/>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30'/>
+      <parameter type-id='type-id-37'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- typedef DBusHandlerResult -->
-      <return type-id='type-id-102'/>
+      <return type-id='type-id-109'/>
     </function-type>
     <!-- dbus_bool_t (DBusConnection*, const char*, void*) -->
-    <function-type size-in-bits='64' id='type-id-133'>
+    <function-type size-in-bits='64' id='type-id-128'>
       <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47'/>
+      <parameter type-id='type-id-31'/>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15'/>
+      <parameter type-id='type-id-7'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-type>
     <!-- dbus_bool_t (DBusConnection*, unsigned long int, void*) -->
-    <function-type size-in-bits='64' id='type-id-134'>
+    <function-type size-in-bits='64' id='type-id-129'>
       <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47'/>
+      <parameter type-id='type-id-31'/>
       <!-- parameter of type 'unsigned long int' -->
-      <parameter type-id='type-id-43'/>
+      <parameter type-id='type-id-26'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-type>
     <!-- dbus_bool_t (DBusTimeout*, void*) -->
-    <function-type size-in-bits='64' id='type-id-135'>
+    <function-type size-in-bits='64' id='type-id-130'>
       <!-- parameter of type 'DBusTimeout*' -->
-      <parameter type-id='type-id-90'/>
+      <parameter type-id='type-id-120'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-type>
     <!-- dbus_bool_t (DBusWatch*, void*) -->
-    <function-type size-in-bits='64' id='type-id-136'>
+    <function-type size-in-bits='64' id='type-id-131'>
       <!-- parameter of type 'DBusWatch*' -->
-      <parameter type-id='type-id-126'/>
+      <parameter type-id='type-id-121'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-type>
     <!-- void (DBusConnection*, DBusDispatchStatus, void*) -->
-    <function-type size-in-bits='64' id='type-id-76'>
+    <function-type size-in-bits='64' id='type-id-133'>
       <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47'/>
+      <parameter type-id='type-id-31'/>
       <!-- parameter of type 'typedef DBusDispatchStatus' -->
-      <parameter type-id='type-id-40'/>
+      <parameter type-id='type-id-47'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-type>
     <!-- void (DBusConnection*, void*) -->
-    <function-type size-in-bits='64' id='type-id-138'>
+    <function-type size-in-bits='64' id='type-id-134'>
       <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47'/>
+      <parameter type-id='type-id-31'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-type>
     <!-- void (DBusTimeout*, void*) -->
-    <function-type size-in-bits='64' id='type-id-139'>
+    <function-type size-in-bits='64' id='type-id-135'>
       <!-- parameter of type 'DBusTimeout*' -->
-      <parameter type-id='type-id-90'/>
+      <parameter type-id='type-id-120'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-type>
     <!-- void (DBusWatch*, void*) -->
-    <function-type size-in-bits='64' id='type-id-140'>
+    <function-type size-in-bits='64' id='type-id-136'>
       <!-- parameter of type 'DBusWatch*' -->
-      <parameter type-id='type-id-126'/>
+      <parameter type-id='type-id-121'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-type>
     <!-- void (void*) -->
-    <function-type size-in-bits='64' id='type-id-77'>
+    <function-type size-in-bits='64' id='type-id-137'>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-type>
-    <!-- typedef void (DBusPendingCall*, void*)* DBusPendingCallNotifyFunction -->
-    <typedef-decl name='DBusPendingCallNotifyFunction' type-id='type-id-142' filepath='../dbus/dbus-connection.h' line='162' column='1' id='type-id-89'/>
-    <!-- typedef typedef dbus_bool_t (void*)* DBusTimeoutHandler -->
-    <typedef-decl name='DBusTimeoutHandler' type-id='type-id-143' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.h' line='41' column='1' id='type-id-92'/>
-    <!-- typedef typedef dbus_bool_t (DBusWatch*, unsigned int, void*)* DBusWatchHandler -->
-    <typedef-decl name='DBusWatchHandler' type-id='type-id-144' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.h' line='43' column='1' id='type-id-94'/>
-    <!-- typedef dbus_bool_t (DBusWatch*, unsigned int, void*)* -->
-    <pointer-type-def type-id='type-id-145' size-in-bits='64' id='type-id-144'/>
-    <!-- typedef dbus_bool_t (void*)* -->
-    <pointer-type-def type-id='type-id-146' size-in-bits='64' id='type-id-143'/>
-    <!-- void (DBusPendingCall*, void*)* -->
-    <pointer-type-def type-id='type-id-147' size-in-bits='64' id='type-id-142'/>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-errors.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
     <!-- variadic parameter type -->
-    <type-decl name='variadic parameter type' id='type-id-148'/>
+    <type-decl name='variadic parameter type' id='type-id-142'/>
     <!-- const DBusError -->
-    <qualified-type-def type-id='type-id-14' const='yes' id='type-id-149'/>
+    <qualified-type-def type-id='type-id-6' const='yes' id='type-id-143'/>
     <!-- const DBusError* -->
-    <pointer-type-def type-id='type-id-149' size-in-bits='64' id='type-id-150'/>
-    <!-- dbus_bool_t dbus_error_is_set(const DBusError*) -->
-    <function-decl name='dbus_error_is_set' mangled-name='dbus_error_is_set' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='329' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_error_is_set'>
-      <!-- parameter of type 'const DBusError*' -->
-      <parameter type-id='type-id-150' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='329' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
+    <pointer-type-def type-id='type-id-143' size-in-bits='64' id='type-id-144'/>
     <!-- void dbus_error_init(DBusError*) -->
     <function-decl name='dbus_error_init' mangled-name='dbus_error_init' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='188' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_error_init'>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='188' column='1'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='188' column='1'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-decl>
     <!-- void dbus_error_free(DBusError*) -->
     <function-decl name='dbus_error_free' mangled-name='dbus_error_free' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='211' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_error_free'>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='211' column='1'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='211' column='1'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void dbus_move_error(DBusError*, DBusError*) -->
-    <function-decl name='dbus_move_error' mangled-name='dbus_move_error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='279' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_move_error'>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='src' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='279' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='dest' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='280' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-decl>
     <!-- void dbus_set_error_const(DBusError*, const char*, const char*) -->
     <function-decl name='dbus_set_error_const' mangled-name='dbus_set_error_const' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='243' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_set_error_const'>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='243' column='1'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='243' column='1'/>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='244' column='1'/>
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='244' column='1'/>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='245' column='1'/>
+      <parameter type-id='type-id-7' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='245' column='1'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-decl>
-    <!-- void dbus_set_error(DBusError*, const char*, const char*, ...) -->
-    <function-decl name='dbus_set_error' mangled-name='dbus_set_error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='354' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_set_error'>
+    <!-- void dbus_move_error(DBusError*, DBusError*) -->
+    <function-decl name='dbus_move_error' mangled-name='dbus_move_error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='279' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_move_error'>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='354' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='355' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='format' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='356' column='1'/>
-      <parameter is-variadic='yes'/>
+      <parameter type-id='type-id-20' name='src' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='279' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='dest' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='280' column='1'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-decl>
     <!-- dbus_bool_t dbus_error_has_name(const DBusError*, const char*) -->
     <function-decl name='dbus_error_has_name' mangled-name='dbus_error_has_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='302' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_error_has_name'>
       <!-- parameter of type 'const DBusError*' -->
-      <parameter type-id='type-id-150' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='302' column='1'/>
+      <parameter type-id='type-id-144' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='302' column='1'/>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='303' column='1'/>
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='303' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_error_is_set(const DBusError*) -->
+    <function-decl name='dbus_error_is_set' mangled-name='dbus_error_is_set' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='329' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_error_is_set'>
+      <!-- parameter of type 'const DBusError*' -->
+      <parameter type-id='type-id-144' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='329' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_set_error(DBusError*, const char*, const char*, ...) -->
+    <function-decl name='dbus_set_error' mangled-name='dbus_set_error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='354' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_set_error'>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='354' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='355' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='format' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-errors.c' line='356' column='1'/>
+      <parameter is-variadic='yes'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
     </function-decl>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-memory.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
     <!-- typedef unsigned long int size_t -->
-    <typedef-decl name='size_t' type-id='type-id-43' filepath='/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/stddef.h' line='211' column='1' id='type-id-151'/>
-    <!-- void dbus_free(void*) -->
-    <function-decl name='dbus_free' mangled-name='dbus_free' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='701' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_free'>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='memory' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='701' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void dbus_shutdown() -->
-    <function-decl name='dbus_shutdown' mangled-name='dbus_shutdown' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='890' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_shutdown'>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void dbus_free_string_array(char**) -->
-    <function-decl name='dbus_free_string_array' mangled-name='dbus_free_string_array' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='749' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_free_string_array'>
-      <!-- parameter of type 'char**' -->
-      <parameter type-id='type-id-127' name='str_array' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='749' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void* dbus_realloc(void*, size_t) -->
-    <function-decl name='dbus_realloc' mangled-name='dbus_realloc' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='601' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_realloc'>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='memory' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='601' column='1'/>
+    <typedef-decl name='size_t' type-id='type-id-26' filepath='/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/stddef.h' line='211' column='1' id='type-id-145'/>
+    <!-- void* dbus_malloc(size_t) -->
+    <function-decl name='dbus_malloc' mangled-name='dbus_malloc' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='461' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_malloc'>
       <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-151' name='bytes' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='602' column='1'/>
+      <parameter type-id='type-id-145' name='bytes' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='461' column='1'/>
       <!-- void* -->
-      <return type-id='type-id-10'/>
+      <return type-id='type-id-8'/>
     </function-decl>
     <!-- void* dbus_malloc0(size_t) -->
     <function-decl name='dbus_malloc0' mangled-name='dbus_malloc0' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='531' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_malloc0'>
       <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-151' name='bytes' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='531' column='1'/>
+      <parameter type-id='type-id-145' name='bytes' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='531' column='1'/>
       <!-- void* -->
-      <return type-id='type-id-10'/>
+      <return type-id='type-id-8'/>
     </function-decl>
-    <!-- void* dbus_malloc(size_t) -->
-    <function-decl name='dbus_malloc' mangled-name='dbus_malloc' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='461' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_malloc'>
+    <!-- void* dbus_realloc(void*, size_t) -->
+    <function-decl name='dbus_realloc' mangled-name='dbus_realloc' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='601' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_realloc'>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='memory' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='601' column='1'/>
       <!-- parameter of type 'typedef size_t' -->
-      <parameter type-id='type-id-151' name='bytes' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='461' column='1'/>
+      <parameter type-id='type-id-145' name='bytes' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='602' column='1'/>
       <!-- void* -->
-      <return type-id='type-id-10'/>
+      <return type-id='type-id-8'/>
+    </function-decl>
+    <!-- void dbus_free(void*) -->
+    <function-decl name='dbus_free' mangled-name='dbus_free' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='701' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_free'>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='memory' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='701' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- void dbus_free_string_array(char**) -->
+    <function-decl name='dbus_free_string_array' mangled-name='dbus_free_string_array' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='749' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_free_string_array'>
+      <!-- parameter of type 'char**' -->
+      <parameter type-id='type-id-122' name='str_array' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='749' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- void dbus_shutdown() -->
+    <function-decl name='dbus_shutdown' mangled-name='dbus_shutdown' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-memory.c' line='890' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_shutdown'>
+      <!-- void -->
+      <return type-id='type-id-24'/>
     </function-decl>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-message.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
     <!-- struct __va_list_tag -->
-    <class-decl name='__va_list_tag' size-in-bits='192' is-struct='yes' visibility='default' id='type-id-152'>
+    <class-decl name='__va_list_tag' size-in-bits='192' is-struct='yes' visibility='default' id='type-id-146'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- unsigned int __va_list_tag::gp_offset -->
         <var-decl name='gp_offset' type-id='type-id-3' visibility='default'/>
@@ -2515,28 +2452,28 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- void* __va_list_tag::overflow_arg_area -->
-        <var-decl name='overflow_arg_area' type-id='type-id-10' visibility='default'/>
+        <var-decl name='overflow_arg_area' type-id='type-id-8' visibility='default'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- void* __va_list_tag::reg_save_area -->
-        <var-decl name='reg_save_area' type-id='type-id-10' visibility='default'/>
+        <var-decl name='reg_save_area' type-id='type-id-8' visibility='default'/>
       </data-member>
     </class-decl>
     <!-- typedef DBusMessageIter DBusMessageIter -->
-    <typedef-decl name='DBusMessageIter' type-id='type-id-153' filepath='../dbus/dbus-message.h' line='46' column='1' id='type-id-154'/>
+    <typedef-decl name='DBusMessageIter' type-id='type-id-147' filepath='../dbus/dbus-message.h' line='46' column='1' id='type-id-148'/>
     <!-- struct DBusMessageIter -->
-    <class-decl name='DBusMessageIter' size-in-bits='576' is-struct='yes' visibility='default' filepath='../dbus/dbus-message.h' line='52' column='1' id='type-id-153'>
+    <class-decl name='DBusMessageIter' size-in-bits='576' is-struct='yes' visibility='default' filepath='../dbus/dbus-message.h' line='52' column='1' id='type-id-147'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- void* DBusMessageIter::dummy1 -->
-        <var-decl name='dummy1' type-id='type-id-10' visibility='default' filepath='../dbus/dbus-message.h' line='53' column='1'/>
+        <var-decl name='dummy1' type-id='type-id-8' visibility='default' filepath='../dbus/dbus-message.h' line='53' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- void* DBusMessageIter::dummy2 -->
-        <var-decl name='dummy2' type-id='type-id-10' visibility='default' filepath='../dbus/dbus-message.h' line='54' column='1'/>
+        <var-decl name='dummy2' type-id='type-id-8' visibility='default' filepath='../dbus/dbus-message.h' line='54' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- dbus_uint32_t DBusMessageIter::dummy3 -->
-        <var-decl name='dummy3' type-id='type-id-16' visibility='default' filepath='../dbus/dbus-message.h' line='55' column='1'/>
+        <var-decl name='dummy3' type-id='type-id-4' visibility='default' filepath='../dbus/dbus-message.h' line='55' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='160'>
         <!-- int DBusMessageIter::dummy4 -->
@@ -2580,802 +2517,869 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='512'>
         <!-- void* DBusMessageIter::pad3 -->
-        <var-decl name='pad3' type-id='type-id-10' visibility='default' filepath='../dbus/dbus-message.h' line='66' column='1'/>
+        <var-decl name='pad3' type-id='type-id-8' visibility='default' filepath='../dbus/dbus-message.h' line='66' column='1'/>
       </data-member>
     </class-decl>
     <!-- DBusMessageIter* -->
-    <pointer-type-def type-id='type-id-154' size-in-bits='64' id='type-id-155'/>
+    <pointer-type-def type-id='type-id-148' size-in-bits='64' id='type-id-149'/>
     <!-- __va_list_tag* -->
-    <pointer-type-def type-id='type-id-152' size-in-bits='64' id='type-id-156'/>
+    <pointer-type-def type-id='type-id-146' size-in-bits='64' id='type-id-150'/>
     <!-- const DBusMessage -->
-    <qualified-type-def type-id='type-id-53' const='yes' id='type-id-157'/>
+    <qualified-type-def type-id='type-id-63' const='yes' id='type-id-151'/>
     <!-- const DBusMessage* -->
-    <pointer-type-def type-id='type-id-157' size-in-bits='64' id='type-id-158'/>
-    <!-- dbus_bool_t dbus_message_contains_unix_fds(DBusMessage*) -->
-    <function-decl name='dbus_message_contains_unix_fds' mangled-name='dbus_message_contains_unix_fds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3825' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_contains_unix_fds'>
+    <pointer-type-def type-id='type-id-151' size-in-bits='64' id='type-id-152'/>
+    <!-- void dbus_message_set_serial(DBusMessage*, dbus_uint32_t) -->
+    <function-decl name='dbus_message_set_serial' mangled-name='dbus_message_set_serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='254' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_serial'>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3825' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- const char* dbus_message_type_to_string(int) -->
-    <function-decl name='dbus_message_type_to_string' mangled-name='dbus_message_type_to_string' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4691' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_type_to_string'>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4691' column='1'/>
-      <!-- const char* -->
-      <return type-id='type-id-15'/>
-    </function-decl>
-    <!-- int dbus_message_demarshal_bytes_needed(const char*, int) -->
-    <function-decl name='dbus_message_demarshal_bytes_needed' mangled-name='dbus_message_demarshal_bytes_needed' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4841' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_demarshal_bytes_needed'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='buf' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4841' column='1'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='len' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4842' column='1'/>
-      <!-- int -->
-      <return type-id='type-id-2'/>
-    </function-decl>
-    <!-- int dbus_message_type_from_string(const char*) -->
-    <function-decl name='dbus_message_type_from_string' mangled-name='dbus_message_type_from_string' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4663' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_type_from_string'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='type_str' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4663' column='1'/>
-      <!-- int -->
-      <return type-id='type-id-2'/>
-    </function-decl>
-    <!-- void* dbus_message_get_data(DBusMessage*, dbus_int32_t) -->
-    <function-decl name='dbus_message_get_data' mangled-name='dbus_message_get_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4635' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_data'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4635' column='1'/>
-      <!-- parameter of type 'typedef dbus_int32_t' -->
-      <parameter type-id='type-id-81' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4636' column='1'/>
-      <!-- void* -->
-      <return type-id='type-id-10'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_set_data(DBusMessage*, dbus_int32_t, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_message_set_data' mangled-name='dbus_message_set_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4599' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_data'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4599' column='1'/>
-      <!-- parameter of type 'typedef dbus_int32_t' -->
-      <parameter type-id='type-id-81' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4600' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4601' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_func' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4602' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_message_free_data_slot(dbus_int32_t*) -->
-    <function-decl name='dbus_message_free_data_slot' mangled-name='dbus_message_free_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4578' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_free_data_slot'>
-      <!-- parameter of type 'dbus_int32_t*' -->
-      <parameter type-id='type-id-131' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4578' column='1'/>
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='254' column='1'/>
+      <!-- parameter of type 'typedef dbus_uint32_t' -->
+      <parameter type-id='type-id-4' name='serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='255' column='1'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-decl>
-    <!-- dbus_bool_t dbus_message_allocate_data_slot(dbus_int32_t*) -->
-    <function-decl name='dbus_message_allocate_data_slot' mangled-name='dbus_message_allocate_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4560' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_allocate_data_slot'>
-      <!-- parameter of type 'dbus_int32_t*' -->
-      <parameter type-id='type-id-131' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4560' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- DBusMessage* dbus_message_ref(DBusMessage*) -->
-    <function-decl name='dbus_message_ref' mangled-name='dbus_message_ref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1667' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_ref'>
+    <!-- void dbus_message_lock(DBusMessage*) -->
+    <function-decl name='dbus_message_lock' mangled-name='dbus_message_lock' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='384' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_lock'>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1667' column='1'/>
-      <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='384' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
     </function-decl>
-    <!-- const char* dbus_message_get_sender(DBusMessage*) -->
-    <function-decl name='dbus_message_get_sender' mangled-name='dbus_message_get_sender' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3510' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_sender'>
+    <!-- dbus_uint32_t dbus_message_get_serial(DBusMessage*) -->
+    <function-decl name='dbus_message_get_serial' mangled-name='dbus_message_get_serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1127' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_serial'>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3510' column='1'/>
-      <!-- const char* -->
-      <return type-id='type-id-15'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_has_sender(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_has_sender' mangled-name='dbus_message_has_sender' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3725' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_has_sender'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3725' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3726' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- const char* dbus_message_get_destination(DBusMessage*) -->
-    <function-decl name='dbus_message_get_destination' mangled-name='dbus_message_get_destination' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3450' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_destination'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3450' column='1'/>
-      <!-- const char* -->
-      <return type-id='type-id-15'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_has_destination(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_has_destination' mangled-name='dbus_message_has_destination' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3690' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_has_destination'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3690' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3691' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- const char* dbus_message_get_error_name(DBusMessage*) -->
-    <function-decl name='dbus_message_get_error_name' mangled-name='dbus_message_get_error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3397' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_error_name'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3397' column='1'/>
-      <!-- const char* -->
-      <return type-id='type-id-15'/>
-    </function-decl>
-    <!-- const char* dbus_message_get_member(DBusMessage*) -->
-    <function-decl name='dbus_message_get_member' mangled-name='dbus_message_get_member' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3313' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_member'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3313' column='1'/>
-      <!-- const char* -->
-      <return type-id='type-id-15'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_has_member(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_has_member' mangled-name='dbus_message_has_member' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3335' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_has_member'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3335' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='member' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3336' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- const char* dbus_message_get_interface(DBusMessage*) -->
-    <function-decl name='dbus_message_get_interface' mangled-name='dbus_message_get_interface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3227' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_interface'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3227' column='1'/>
-      <!-- const char* -->
-      <return type-id='type-id-15'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_has_interface(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_has_interface' mangled-name='dbus_message_has_interface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3249' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_has_interface'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3249' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='iface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3250' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- const char* dbus_message_get_path(DBusMessage*) -->
-    <function-decl name='dbus_message_get_path' mangled-name='dbus_message_get_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3096' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_path'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3096' column='1'/>
-      <!-- const char* -->
-      <return type-id='type-id-15'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_has_path(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_has_path' mangled-name='dbus_message_has_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3120' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_has_path'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3120' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3121' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_uint32_t dbus_message_get_reply_serial(DBusMessage*) -->
-    <function-decl name='dbus_message_get_reply_serial' mangled-name='dbus_message_get_reply_serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1163' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_reply_serial'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1163' column='1'/>
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1127' column='1'/>
       <!-- typedef dbus_uint32_t -->
-      <return type-id='type-id-16'/>
-    </function-decl>
-    <!-- const char* dbus_message_get_signature(DBusMessage*) -->
-    <function-decl name='dbus_message_get_signature' mangled-name='dbus_message_get_signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3543' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_signature'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3543' column='1'/>
-      <!-- const char* -->
-      <return type-id='type-id-15'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_has_signature(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_has_signature' mangled-name='dbus_message_has_signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3754' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_has_signature'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3754' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3755' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_set_sender(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_set_sender' mangled-name='dbus_message_set_sender' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3479' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_sender'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3479' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='sender' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3480' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_set_destination(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_set_destination' mangled-name='dbus_message_set_destination' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3425' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_destination'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3425' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='destination' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3426' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-4'/>
     </function-decl>
     <!-- dbus_bool_t dbus_message_set_reply_serial(DBusMessage*, dbus_uint32_t) -->
     <function-decl name='dbus_message_set_reply_serial' mangled-name='dbus_message_set_reply_serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1143' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_reply_serial'>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1143' column='1'/>
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1143' column='1'/>
       <!-- parameter of type 'typedef dbus_uint32_t' -->
-      <parameter type-id='type-id-16' name='reply_serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1144' column='1'/>
+      <parameter type-id='type-id-4' name='reply_serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1144' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-decl>
-    <!-- dbus_bool_t dbus_message_set_error_name(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_set_error_name' mangled-name='dbus_message_set_error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3371' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_error_name'>
+    <!-- dbus_uint32_t dbus_message_get_reply_serial(DBusMessage*) -->
+    <function-decl name='dbus_message_get_reply_serial' mangled-name='dbus_message_get_reply_serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1163' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_reply_serial'>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3371' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3372' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_set_member(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_set_member' mangled-name='dbus_message_set_member' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3286' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_member'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3286' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='member' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3287' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_set_interface(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_set_interface' mangled-name='dbus_message_set_interface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3198' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_interface'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3198' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='iface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3199' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_get_path_decomposed(DBusMessage*, char***) -->
-    <function-decl name='dbus_message_get_path_decomposed' mangled-name='dbus_message_get_path_decomposed' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3164' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_path_decomposed'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3164' column='1'/>
-      <!-- parameter of type 'char***' -->
-      <parameter type-id='type-id-128' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3165' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_set_path(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_set_path' mangled-name='dbus_message_set_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3067' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_path'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3067' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='object_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3068' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_get_auto_start(DBusMessage*) -->
-    <function-decl name='dbus_message_get_auto_start' mangled-name='dbus_message_get_auto_start' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3045' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_auto_start'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3045' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_get_no_reply(DBusMessage*) -->
-    <function-decl name='dbus_message_get_no_reply' mangled-name='dbus_message_get_no_reply' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3003' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_no_reply'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3003' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_message_set_auto_start(DBusMessage*, dbus_bool_t) -->
-    <function-decl name='dbus_message_set_auto_start' mangled-name='dbus_message_set_auto_start' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3026' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_auto_start'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3026' column='1'/>
-      <!-- parameter of type 'typedef dbus_bool_t' -->
-      <parameter type-id='type-id-17' name='auto_start' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3027' column='1'/>
-      <!-- void -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1163' column='1'/>
+      <!-- typedef dbus_uint32_t -->
       <return type-id='type-id-4'/>
     </function-decl>
-    <!-- void dbus_message_set_no_reply(DBusMessage*, dbus_bool_t) -->
-    <function-decl name='dbus_message_set_no_reply' mangled-name='dbus_message_set_no_reply' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2984' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_no_reply'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2984' column='1'/>
-      <!-- parameter of type 'typedef dbus_bool_t' -->
-      <parameter type-id='type-id-17' name='no_reply' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2985' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void dbus_message_iter_abandon_container(DBusMessageIter*, DBusMessageIter*) -->
-    <function-decl name='dbus_message_iter_abandon_container' mangled-name='dbus_message_iter_abandon_container' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2951' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_abandon_container'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2951' column='1'/>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='sub' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2952' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_iter_close_container(DBusMessageIter*, DBusMessageIter*) -->
-    <function-decl name='dbus_message_iter_close_container' mangled-name='dbus_message_iter_close_container' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2918' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_close_container'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2918' column='1'/>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='sub' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2919' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_iter_open_container(DBusMessageIter*, int, const char*, DBusMessageIter*) -->
-    <function-decl name='dbus_message_iter_open_container' mangled-name='dbus_message_iter_open_container' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2849' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_open_container'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2849' column='1'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2850' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='contained_signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2851' column='1'/>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='sub' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2852' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_iter_append_fixed_array(DBusMessageIter*, int, void*, int) -->
-    <function-decl name='dbus_message_iter_append_fixed_array' mangled-name='dbus_message_iter_append_fixed_array' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2791' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_append_fixed_array'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2791' column='1'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='element_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2792' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2793' column='1'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='n_elements' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2794' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_iter_append_basic(DBusMessageIter*, int, void*) -->
-    <function-decl name='dbus_message_iter_append_basic' mangled-name='dbus_message_iter_append_basic' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2656' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_append_basic'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2656' column='1'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2657' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2658' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_message_iter_init_append(DBusMessage*, DBusMessageIter*) -->
-    <function-decl name='dbus_message_iter_init_append' mangled-name='dbus_message_iter_init_append' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2421' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_init_append'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2421' column='1'/>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2422' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- int dbus_message_iter_get_arg_type(DBusMessageIter*) -->
-    <function-decl name='dbus_message_iter_get_arg_type' mangled-name='dbus_message_iter_get_arg_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2139' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_get_arg_type'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2139' column='1'/>
-      <!-- int -->
-      <return type-id='type-id-2'/>
-    </function-decl>
-    <!-- void dbus_message_iter_get_fixed_array(DBusMessageIter*, void*, int*) -->
-    <function-decl name='dbus_message_iter_get_fixed_array' mangled-name='dbus_message_iter_get_fixed_array' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2391' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_get_fixed_array'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2391' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2392' column='1'/>
-      <!-- parameter of type 'int*' -->
-      <parameter type-id='type-id-24' name='n_elements' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2393' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- int dbus_message_iter_get_array_len(DBusMessageIter*) -->
-    <function-decl name='dbus_message_iter_get_array_len' mangled-name='dbus_message_iter_get_array_len' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2346' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_get_array_len'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2346' column='1'/>
-      <!-- int -->
-      <return type-id='type-id-2'/>
-    </function-decl>
-    <!-- void dbus_message_iter_get_basic(DBusMessageIter*, void*) -->
-    <function-decl name='dbus_message_iter_get_basic' mangled-name='dbus_message_iter_get_basic' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2293' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_get_basic'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2293' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2294' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- char* dbus_message_iter_get_signature(DBusMessageIter*) -->
-    <function-decl name='dbus_message_iter_get_signature' mangled-name='dbus_message_iter_get_signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2220' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_get_signature'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2220' column='1'/>
-      <!-- char* -->
-      <return type-id='type-id-22'/>
-    </function-decl>
-    <!-- void dbus_message_iter_recurse(DBusMessageIter*, DBusMessageIter*) -->
-    <function-decl name='dbus_message_iter_recurse' mangled-name='dbus_message_iter_recurse' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2195' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_recurse'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2195' column='1'/>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='sub' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2196' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- int dbus_message_iter_get_element_type(DBusMessageIter*) -->
-    <function-decl name='dbus_message_iter_get_element_type' mangled-name='dbus_message_iter_get_element_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2158' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_get_element_type'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2158' column='1'/>
-      <!-- int -->
-      <return type-id='type-id-2'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_iter_next(DBusMessageIter*) -->
-    <function-decl name='dbus_message_iter_next' mangled-name='dbus_message_iter_next' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2114' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_next'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2114' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_iter_has_next(DBusMessageIter*) -->
-    <function-decl name='dbus_message_iter_has_next' mangled-name='dbus_message_iter_has_next' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2095' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_has_next'>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2095' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_iter_init(DBusMessage*, DBusMessageIter*) -->
-    <function-decl name='dbus_message_iter_init' mangled-name='dbus_message_iter_init' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2064' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_init'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2064' column='1'/>
-      <!-- parameter of type 'DBusMessageIter*' -->
-      <parameter type-id='type-id-155' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2065' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_append_args_valist(DBusMessage*, int, __va_list_tag*) -->
-    <function-decl name='dbus_message_append_args_valist' mangled-name='dbus_message_append_args_valist' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1824' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_append_args_valist'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1824' column='1'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='first_arg_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1825' column='1'/>
-      <!-- parameter of type '__va_list_tag*' -->
-      <parameter type-id='type-id-156' name='var_args' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1826' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_append_args(DBusMessage*, int, ...) -->
-    <function-decl name='dbus_message_append_args' mangled-name='dbus_message_append_args' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1792' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_append_args'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1792' column='1'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='first_arg_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1793' column='1'/>
-      <parameter is-variadic='yes'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- int dbus_message_get_type(DBusMessage*) -->
-    <function-decl name='dbus_message_get_type' mangled-name='dbus_message_get_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1722' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_type'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1722' column='1'/>
-      <!-- int -->
-      <return type-id='type-id-2'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_is_error(DBusMessage*, const char*) -->
-    <function-decl name='dbus_message_is_error' mangled-name='dbus_message_is_error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3657' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_is_error'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3657' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3658' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_is_signal(DBusMessage*, const char*, const char*) -->
-    <function-decl name='dbus_message_is_signal' mangled-name='dbus_message_is_signal' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3630' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_is_signal'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3630' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='iface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3631' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='signal_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3632' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_message_is_method_call(DBusMessage*, const char*, const char*) -->
-    <function-decl name='dbus_message_is_method_call' mangled-name='dbus_message_is_method_call' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3602' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_is_method_call'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3602' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='iface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3603' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='method' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3604' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_message_unref(DBusMessage*) -->
-    <function-decl name='dbus_message_unref' mangled-name='dbus_message_unref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1690' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_unref'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1690' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- DBusMessage* dbus_message_demarshal(const char*, int, DBusError*) -->
-    <function-decl name='dbus_message_demarshal' mangled-name='dbus_message_demarshal' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4783' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_demarshal'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='str' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4783' column='1'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='len' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4784' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4785' column='1'/>
-      <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
-    </function-decl>
-    <!-- DBusMessage* dbus_message_copy(const DBusMessage*) -->
-    <function-decl name='dbus_message_copy' mangled-name='dbus_message_copy' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1587' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_copy'>
-      <!-- parameter of type 'const DBusMessage*' -->
-      <parameter type-id='type-id-158' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1587' column='1'/>
-      <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
-    </function-decl>
-    <!-- DBusMessage* dbus_message_new_signal(const char*, const char*, const char*) -->
-    <function-decl name='dbus_message_new_signal' mangled-name='dbus_message_new_signal' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1424' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_new_signal'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1424' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='iface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1425' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1426' column='1'/>
-      <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
-    </function-decl>
-    <!-- DBusMessage* dbus_message_new_method_call(const char*, const char*, const char*, const char*) -->
-    <function-decl name='dbus_message_new_method_call' mangled-name='dbus_message_new_method_call' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1333' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_new_method_call'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='destination' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1333' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1334' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='iface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1335' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='method' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1336' column='1'/>
-      <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
-    </function-decl>
     <!-- DBusMessage* dbus_message_new(int) -->
     <function-decl name='dbus_message_new' mangled-name='dbus_message_new' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1289' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_new'>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-2' name='message_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1289' column='1'/>
       <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
+      <return type-id='type-id-37'/>
     </function-decl>
-    <!-- dbus_uint32_t dbus_message_get_serial(DBusMessage*) -->
-    <function-decl name='dbus_message_get_serial' mangled-name='dbus_message_get_serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1127' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_serial'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1127' column='1'/>
-      <!-- typedef dbus_uint32_t -->
-      <return type-id='type-id-16'/>
-    </function-decl>
-    <!-- DBusMessage* dbus_message_new_error(DBusMessage*, const char*, const char*) -->
-    <function-decl name='dbus_message_new_error' mangled-name='dbus_message_new_error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1470' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_new_error'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='reply_to' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1470' column='1'/>
+    <!-- DBusMessage* dbus_message_new_method_call(const char*, const char*, const char*, const char*) -->
+    <function-decl name='dbus_message_new_method_call' mangled-name='dbus_message_new_method_call' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1333' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_new_method_call'>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1471' column='1'/>
+      <parameter type-id='type-id-7' name='destination' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1333' column='1'/>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='error_message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1472' column='1'/>
+      <parameter type-id='type-id-7' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1334' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='iface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1335' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='method' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1336' column='1'/>
       <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
-    </function-decl>
-    <!-- DBusMessage* dbus_message_new_error_printf(DBusMessage*, const char*, const char*, ...) -->
-    <function-decl name='dbus_message_new_error_printf' mangled-name='dbus_message_new_error_printf' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1542' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_new_error_printf'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='reply_to' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1542' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1543' column='1'/>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='error_format' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1544' column='1'/>
-      <parameter is-variadic='yes'/>
-      <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
+      <return type-id='type-id-37'/>
     </function-decl>
     <!-- DBusMessage* dbus_message_new_method_return(DBusMessage*) -->
     <function-decl name='dbus_message_new_method_return' mangled-name='dbus_message_new_method_return' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1373' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_new_method_return'>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='method_call' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1373' column='1'/>
+      <parameter type-id='type-id-37' name='method_call' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1373' column='1'/>
       <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
+      <return type-id='type-id-37'/>
     </function-decl>
-    <!-- dbus_bool_t dbus_message_get_args_valist(DBusMessage*, DBusError*, int, __va_list_tag*) -->
-    <function-decl name='dbus_message_get_args_valist' mangled-name='dbus_message_get_args_valist' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2009' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_args_valist'>
+    <!-- DBusMessage* dbus_message_new_signal(const char*, const char*, const char*) -->
+    <function-decl name='dbus_message_new_signal' mangled-name='dbus_message_new_signal' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1424' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_new_signal'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1424' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='iface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1425' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1426' column='1'/>
+      <!-- DBusMessage* -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- DBusMessage* dbus_message_new_error(DBusMessage*, const char*, const char*) -->
+    <function-decl name='dbus_message_new_error' mangled-name='dbus_message_new_error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1470' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_new_error'>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2009' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2010' column='1'/>
+      <parameter type-id='type-id-37' name='reply_to' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1470' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1471' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='error_message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1472' column='1'/>
+      <!-- DBusMessage* -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- DBusMessage* dbus_message_new_error_printf(DBusMessage*, const char*, const char*, ...) -->
+    <function-decl name='dbus_message_new_error_printf' mangled-name='dbus_message_new_error_printf' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1542' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_new_error_printf'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='reply_to' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1542' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1543' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='error_format' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1544' column='1'/>
+      <parameter is-variadic='yes'/>
+      <!-- DBusMessage* -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- DBusMessage* dbus_message_copy(const DBusMessage*) -->
+    <function-decl name='dbus_message_copy' mangled-name='dbus_message_copy' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1587' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_copy'>
+      <!-- parameter of type 'const DBusMessage*' -->
+      <parameter type-id='type-id-152' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1587' column='1'/>
+      <!-- DBusMessage* -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- DBusMessage* dbus_message_ref(DBusMessage*) -->
+    <function-decl name='dbus_message_ref' mangled-name='dbus_message_ref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1667' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_ref'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1667' column='1'/>
+      <!-- DBusMessage* -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- void dbus_message_unref(DBusMessage*) -->
+    <function-decl name='dbus_message_unref' mangled-name='dbus_message_unref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1690' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_unref'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1690' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- int dbus_message_get_type(DBusMessage*) -->
+    <function-decl name='dbus_message_get_type' mangled-name='dbus_message_get_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1722' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_type'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1722' column='1'/>
+      <!-- int -->
+      <return type-id='type-id-2'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_append_args(DBusMessage*, int, ...) -->
+    <function-decl name='dbus_message_append_args' mangled-name='dbus_message_append_args' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1792' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_append_args'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1792' column='1'/>
       <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='first_arg_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2011' column='1'/>
-      <!-- parameter of type '__va_list_tag*' -->
-      <parameter type-id='type-id-156' name='var_args' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2012' column='1'/>
+      <parameter type-id='type-id-2' name='first_arg_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1793' column='1'/>
+      <parameter is-variadic='yes'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_append_args_valist(DBusMessage*, int, __va_list_tag*) -->
+    <function-decl name='dbus_message_append_args_valist' mangled-name='dbus_message_append_args_valist' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1824' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_append_args_valist'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1824' column='1'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='first_arg_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1825' column='1'/>
+      <!-- parameter of type '__va_list_tag*' -->
+      <parameter type-id='type-id-150' name='var_args' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1826' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
     </function-decl>
     <!-- dbus_bool_t dbus_message_get_args(DBusMessage*, DBusError*, int, ...) -->
     <function-decl name='dbus_message_get_args' mangled-name='dbus_message_get_args' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1980' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_args'>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1980' column='1'/>
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1980' column='1'/>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1981' column='1'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1981' column='1'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-2' name='first_arg_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='1982' column='1'/>
       <parameter is-variadic='yes'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_get_args_valist(DBusMessage*, DBusError*, int, __va_list_tag*) -->
+    <function-decl name='dbus_message_get_args_valist' mangled-name='dbus_message_get_args_valist' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2009' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_args_valist'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2009' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2010' column='1'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='first_arg_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2011' column='1'/>
+      <!-- parameter of type '__va_list_tag*' -->
+      <parameter type-id='type-id-150' name='var_args' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2012' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_iter_init(DBusMessage*, DBusMessageIter*) -->
+    <function-decl name='dbus_message_iter_init' mangled-name='dbus_message_iter_init' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2064' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_init'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2064' column='1'/>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2065' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_iter_has_next(DBusMessageIter*) -->
+    <function-decl name='dbus_message_iter_has_next' mangled-name='dbus_message_iter_has_next' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2095' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_has_next'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2095' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_iter_next(DBusMessageIter*) -->
+    <function-decl name='dbus_message_iter_next' mangled-name='dbus_message_iter_next' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2114' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_next'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2114' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- int dbus_message_iter_get_arg_type(DBusMessageIter*) -->
+    <function-decl name='dbus_message_iter_get_arg_type' mangled-name='dbus_message_iter_get_arg_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2139' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_get_arg_type'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2139' column='1'/>
+      <!-- int -->
+      <return type-id='type-id-2'/>
+    </function-decl>
+    <!-- int dbus_message_iter_get_element_type(DBusMessageIter*) -->
+    <function-decl name='dbus_message_iter_get_element_type' mangled-name='dbus_message_iter_get_element_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2158' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_get_element_type'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2158' column='1'/>
+      <!-- int -->
+      <return type-id='type-id-2'/>
+    </function-decl>
+    <!-- void dbus_message_iter_recurse(DBusMessageIter*, DBusMessageIter*) -->
+    <function-decl name='dbus_message_iter_recurse' mangled-name='dbus_message_iter_recurse' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2195' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_recurse'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2195' column='1'/>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='sub' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2196' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- char* dbus_message_iter_get_signature(DBusMessageIter*) -->
+    <function-decl name='dbus_message_iter_get_signature' mangled-name='dbus_message_iter_get_signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2220' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_get_signature'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2220' column='1'/>
+      <!-- char* -->
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <!-- void dbus_message_iter_get_basic(DBusMessageIter*, void*) -->
+    <function-decl name='dbus_message_iter_get_basic' mangled-name='dbus_message_iter_get_basic' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2293' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_get_basic'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2293' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2294' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- int dbus_message_iter_get_array_len(DBusMessageIter*) -->
+    <function-decl name='dbus_message_iter_get_array_len' mangled-name='dbus_message_iter_get_array_len' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2346' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_get_array_len'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2346' column='1'/>
+      <!-- int -->
+      <return type-id='type-id-2'/>
+    </function-decl>
+    <!-- void dbus_message_iter_get_fixed_array(DBusMessageIter*, void*, int*) -->
+    <function-decl name='dbus_message_iter_get_fixed_array' mangled-name='dbus_message_iter_get_fixed_array' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2391' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_get_fixed_array'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2391' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2392' column='1'/>
+      <!-- parameter of type 'int*' -->
+      <parameter type-id='type-id-23' name='n_elements' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2393' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- void dbus_message_iter_init_append(DBusMessage*, DBusMessageIter*) -->
+    <function-decl name='dbus_message_iter_init_append' mangled-name='dbus_message_iter_init_append' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2421' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_init_append'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2421' column='1'/>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2422' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_iter_append_basic(DBusMessageIter*, int, void*) -->
+    <function-decl name='dbus_message_iter_append_basic' mangled-name='dbus_message_iter_append_basic' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2656' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_append_basic'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2656' column='1'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2657' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2658' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_iter_append_fixed_array(DBusMessageIter*, int, void*, int) -->
+    <function-decl name='dbus_message_iter_append_fixed_array' mangled-name='dbus_message_iter_append_fixed_array' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2791' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_append_fixed_array'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2791' column='1'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='element_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2792' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2793' column='1'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='n_elements' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2794' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_iter_open_container(DBusMessageIter*, int, const char*, DBusMessageIter*) -->
+    <function-decl name='dbus_message_iter_open_container' mangled-name='dbus_message_iter_open_container' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2849' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_open_container'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2849' column='1'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2850' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='contained_signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2851' column='1'/>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='sub' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2852' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_iter_close_container(DBusMessageIter*, DBusMessageIter*) -->
+    <function-decl name='dbus_message_iter_close_container' mangled-name='dbus_message_iter_close_container' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2918' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_close_container'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2918' column='1'/>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='sub' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2919' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_message_iter_abandon_container(DBusMessageIter*, DBusMessageIter*) -->
+    <function-decl name='dbus_message_iter_abandon_container' mangled-name='dbus_message_iter_abandon_container' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2951' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_iter_abandon_container'>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2951' column='1'/>
+      <!-- parameter of type 'DBusMessageIter*' -->
+      <parameter type-id='type-id-149' name='sub' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2952' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- void dbus_message_set_no_reply(DBusMessage*, dbus_bool_t) -->
+    <function-decl name='dbus_message_set_no_reply' mangled-name='dbus_message_set_no_reply' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2984' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_no_reply'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2984' column='1'/>
+      <!-- parameter of type 'typedef dbus_bool_t' -->
+      <parameter type-id='type-id-13' name='no_reply' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='2985' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_get_no_reply(DBusMessage*) -->
+    <function-decl name='dbus_message_get_no_reply' mangled-name='dbus_message_get_no_reply' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3003' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_no_reply'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3003' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_message_set_auto_start(DBusMessage*, dbus_bool_t) -->
+    <function-decl name='dbus_message_set_auto_start' mangled-name='dbus_message_set_auto_start' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3026' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_auto_start'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3026' column='1'/>
+      <!-- parameter of type 'typedef dbus_bool_t' -->
+      <parameter type-id='type-id-13' name='auto_start' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3027' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_get_auto_start(DBusMessage*) -->
+    <function-decl name='dbus_message_get_auto_start' mangled-name='dbus_message_get_auto_start' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3045' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_auto_start'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3045' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_set_path(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_set_path' mangled-name='dbus_message_set_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3067' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_path'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3067' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='object_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3068' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- const char* dbus_message_get_path(DBusMessage*) -->
+    <function-decl name='dbus_message_get_path' mangled-name='dbus_message_get_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3096' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_path'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3096' column='1'/>
+      <!-- const char* -->
+      <return type-id='type-id-7'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_has_path(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_has_path' mangled-name='dbus_message_has_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3120' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_has_path'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3120' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3121' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_get_path_decomposed(DBusMessage*, char***) -->
+    <function-decl name='dbus_message_get_path_decomposed' mangled-name='dbus_message_get_path_decomposed' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3164' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_path_decomposed'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3164' column='1'/>
+      <!-- parameter of type 'char***' -->
+      <parameter type-id='type-id-123' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3165' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_set_interface(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_set_interface' mangled-name='dbus_message_set_interface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3198' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_interface'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3198' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='iface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3199' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- const char* dbus_message_get_interface(DBusMessage*) -->
+    <function-decl name='dbus_message_get_interface' mangled-name='dbus_message_get_interface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3227' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_interface'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3227' column='1'/>
+      <!-- const char* -->
+      <return type-id='type-id-7'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_has_interface(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_has_interface' mangled-name='dbus_message_has_interface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3249' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_has_interface'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3249' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='iface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3250' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_set_member(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_set_member' mangled-name='dbus_message_set_member' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3286' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_member'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3286' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='member' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3287' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- const char* dbus_message_get_member(DBusMessage*) -->
+    <function-decl name='dbus_message_get_member' mangled-name='dbus_message_get_member' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3313' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_member'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3313' column='1'/>
+      <!-- const char* -->
+      <return type-id='type-id-7'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_has_member(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_has_member' mangled-name='dbus_message_has_member' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3335' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_has_member'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3335' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='member' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3336' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_set_error_name(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_set_error_name' mangled-name='dbus_message_set_error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3371' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_error_name'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3371' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3372' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- const char* dbus_message_get_error_name(DBusMessage*) -->
+    <function-decl name='dbus_message_get_error_name' mangled-name='dbus_message_get_error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3397' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_error_name'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3397' column='1'/>
+      <!-- const char* -->
+      <return type-id='type-id-7'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_set_destination(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_set_destination' mangled-name='dbus_message_set_destination' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3425' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_destination'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3425' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='destination' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3426' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- const char* dbus_message_get_destination(DBusMessage*) -->
+    <function-decl name='dbus_message_get_destination' mangled-name='dbus_message_get_destination' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3450' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_destination'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3450' column='1'/>
+      <!-- const char* -->
+      <return type-id='type-id-7'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_set_sender(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_set_sender' mangled-name='dbus_message_set_sender' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3479' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_sender'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3479' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='sender' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3480' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- const char* dbus_message_get_sender(DBusMessage*) -->
+    <function-decl name='dbus_message_get_sender' mangled-name='dbus_message_get_sender' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3510' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_sender'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3510' column='1'/>
+      <!-- const char* -->
+      <return type-id='type-id-7'/>
+    </function-decl>
+    <!-- const char* dbus_message_get_signature(DBusMessage*) -->
+    <function-decl name='dbus_message_get_signature' mangled-name='dbus_message_get_signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3543' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_signature'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3543' column='1'/>
+      <!-- const char* -->
+      <return type-id='type-id-7'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_is_method_call(DBusMessage*, const char*, const char*) -->
+    <function-decl name='dbus_message_is_method_call' mangled-name='dbus_message_is_method_call' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3602' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_is_method_call'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3602' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='iface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3603' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='method' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3604' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_is_signal(DBusMessage*, const char*, const char*) -->
+    <function-decl name='dbus_message_is_signal' mangled-name='dbus_message_is_signal' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3630' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_is_signal'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3630' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='iface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3631' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='signal_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3632' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_is_error(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_is_error' mangled-name='dbus_message_is_error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3657' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_is_error'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3657' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3658' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_has_destination(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_has_destination' mangled-name='dbus_message_has_destination' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3690' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_has_destination'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3690' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3691' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_has_sender(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_has_sender' mangled-name='dbus_message_has_sender' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3725' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_has_sender'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3725' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3726' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_has_signature(DBusMessage*, const char*) -->
+    <function-decl name='dbus_message_has_signature' mangled-name='dbus_message_has_signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3754' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_has_signature'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3754' column='1'/>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3755' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
     </function-decl>
     <!-- dbus_bool_t dbus_set_error_from_message(DBusError*, DBusMessage*) -->
     <function-decl name='dbus_set_error_from_message' mangled-name='dbus_set_error_from_message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3796' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_set_error_from_message'>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3796' column='1'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3796' column='1'/>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3797' column='1'/>
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3797' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-decl>
-    <!-- void dbus_message_lock(DBusMessage*) -->
-    <function-decl name='dbus_message_lock' mangled-name='dbus_message_lock' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='384' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_lock'>
+    <!-- dbus_bool_t dbus_message_contains_unix_fds(DBusMessage*) -->
+    <function-decl name='dbus_message_contains_unix_fds' mangled-name='dbus_message_contains_unix_fds' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3825' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_contains_unix_fds'>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='384' column='1'/>
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='3825' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_allocate_data_slot(dbus_int32_t*) -->
+    <function-decl name='dbus_message_allocate_data_slot' mangled-name='dbus_message_allocate_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4560' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_allocate_data_slot'>
+      <!-- parameter of type 'dbus_int32_t*' -->
+      <parameter type-id='type-id-126' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4560' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_message_free_data_slot(dbus_int32_t*) -->
+    <function-decl name='dbus_message_free_data_slot' mangled-name='dbus_message_free_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4578' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_free_data_slot'>
+      <!-- parameter of type 'dbus_int32_t*' -->
+      <parameter type-id='type-id-126' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4578' column='1'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_message_set_data(DBusMessage*, dbus_int32_t, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_message_set_data' mangled-name='dbus_message_set_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4599' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_data'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4599' column='1'/>
+      <!-- parameter of type 'typedef dbus_int32_t' -->
+      <parameter type-id='type-id-53' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4600' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4601' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_func' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4602' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void* dbus_message_get_data(DBusMessage*, dbus_int32_t) -->
+    <function-decl name='dbus_message_get_data' mangled-name='dbus_message_get_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4635' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_get_data'>
+      <!-- parameter of type 'DBusMessage*' -->
+      <parameter type-id='type-id-37' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4635' column='1'/>
+      <!-- parameter of type 'typedef dbus_int32_t' -->
+      <parameter type-id='type-id-53' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4636' column='1'/>
+      <!-- void* -->
+      <return type-id='type-id-8'/>
+    </function-decl>
+    <!-- int dbus_message_type_from_string(const char*) -->
+    <function-decl name='dbus_message_type_from_string' mangled-name='dbus_message_type_from_string' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4663' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_type_from_string'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='type_str' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4663' column='1'/>
+      <!-- int -->
+      <return type-id='type-id-2'/>
+    </function-decl>
+    <!-- const char* dbus_message_type_to_string(int) -->
+    <function-decl name='dbus_message_type_to_string' mangled-name='dbus_message_type_to_string' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4691' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_type_to_string'>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4691' column='1'/>
+      <!-- const char* -->
+      <return type-id='type-id-7'/>
     </function-decl>
     <!-- dbus_bool_t dbus_message_marshal(DBusMessage*, char**, int*) -->
     <function-decl name='dbus_message_marshal' mangled-name='dbus_message_marshal' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4721' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_marshal'>
       <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='msg' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4721' column='1'/>
+      <parameter type-id='type-id-37' name='msg' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4721' column='1'/>
       <!-- parameter of type 'char**' -->
-      <parameter type-id='type-id-127' name='marshalled_data_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4722' column='1'/>
+      <parameter type-id='type-id-122' name='marshalled_data_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4722' column='1'/>
       <!-- parameter of type 'int*' -->
-      <parameter type-id='type-id-24' name='len_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4723' column='1'/>
+      <parameter type-id='type-id-23' name='len_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4723' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-decl>
-    <!-- void dbus_message_set_serial(DBusMessage*, dbus_uint32_t) -->
-    <function-decl name='dbus_message_set_serial' mangled-name='dbus_message_set_serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='254' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_set_serial'>
-      <!-- parameter of type 'DBusMessage*' -->
-      <parameter type-id='type-id-30' name='message' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='254' column='1'/>
-      <!-- parameter of type 'typedef dbus_uint32_t' -->
-      <parameter type-id='type-id-16' name='serial' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='255' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
+    <!-- DBusMessage* dbus_message_demarshal(const char*, int, DBusError*) -->
+    <function-decl name='dbus_message_demarshal' mangled-name='dbus_message_demarshal' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4783' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_demarshal'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='str' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4783' column='1'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='len' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4784' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4785' column='1'/>
+      <!-- DBusMessage* -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- int dbus_message_demarshal_bytes_needed(const char*, int) -->
+    <function-decl name='dbus_message_demarshal_bytes_needed' mangled-name='dbus_message_demarshal_bytes_needed' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4841' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_message_demarshal_bytes_needed'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='buf' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4841' column='1'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='len' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-message.c' line='4842' column='1'/>
+      <!-- int -->
+      <return type-id='type-id-2'/>
     </function-decl>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-misc.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
-    <!-- void dbus_get_version(int*, int*, int*) -->
-    <function-decl name='dbus_get_version' mangled-name='dbus_get_version' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-misc.c' line='161' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_get_version'>
-      <!-- parameter of type 'int*' -->
-      <parameter type-id='type-id-24' name='major_version_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-misc.c' line='161' column='1'/>
-      <!-- parameter of type 'int*' -->
-      <parameter type-id='type-id-24' name='minor_version_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-misc.c' line='162' column='1'/>
-      <!-- parameter of type 'int*' -->
-      <parameter type-id='type-id-24' name='micro_version_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-misc.c' line='163' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
     <!-- char* dbus_get_local_machine_id() -->
     <function-decl name='dbus_get_local_machine_id' mangled-name='dbus_get_local_machine_id' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-misc.c' line='73' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_get_local_machine_id'>
       <!-- char* -->
-      <return type-id='type-id-22'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <!-- void dbus_get_version(int*, int*, int*) -->
+    <function-decl name='dbus_get_version' mangled-name='dbus_get_version' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-misc.c' line='161' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_get_version'>
+      <!-- parameter of type 'int*' -->
+      <parameter type-id='type-id-23' name='major_version_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-misc.c' line='161' column='1'/>
+      <!-- parameter of type 'int*' -->
+      <parameter type-id='type-id-23' name='minor_version_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-misc.c' line='162' column='1'/>
+      <!-- parameter of type 'int*' -->
+      <parameter type-id='type-id-23' name='micro_version_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-misc.c' line='163' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
     </function-decl>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-pending-call.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
     <!-- typedef void (DBusPendingCall*, void*)* DBusPendingCallNotifyFunction -->
-    <typedef-decl name='DBusPendingCallNotifyFunction' type-id='type-id-142' filepath='../dbus/dbus-connection.h' line='162' column='1' id='type-id-89'/>
+    <typedef-decl name='DBusPendingCallNotifyFunction' type-id='type-id-153' filepath='../dbus/dbus-connection.h' line='162' column='1' id='type-id-139'/>
+    <!-- struct DBusPendingCall -->
+    <class-decl name='DBusPendingCall' size-in-bits='576' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='63' column='1' id='type-id-80'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- DBusAtomic DBusPendingCall::refcount -->
+        <var-decl name='refcount' type-id='type-id-33' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='64' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- DBusDataSlotList DBusPendingCall::slot_list -->
+        <var-decl name='slot_list' type-id='type-id-42' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='66' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- DBusPendingCallNotifyFunction DBusPendingCall::function -->
+        <var-decl name='function' type-id='type-id-139' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='68' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- DBusConnection* DBusPendingCall::connection -->
+        <var-decl name='connection' type-id='type-id-31' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='70' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- DBusMessage* DBusPendingCall::reply -->
+        <var-decl name='reply' type-id='type-id-37' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='71' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- DBusTimeout* DBusPendingCall::timeout -->
+        <var-decl name='timeout' type-id='type-id-120' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='72' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <!-- DBusList* DBusPendingCall::timeout_link -->
+        <var-decl name='timeout_link' type-id='type-id-15' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='74' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <!-- dbus_uint32_t DBusPendingCall::reply_serial -->
+        <var-decl name='reply_serial' type-id='type-id-4' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='76' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='544'>
+        <!-- unsigned int DBusPendingCall::completed -->
+        <var-decl name='completed' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='78' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='545'>
+        <!-- unsigned int DBusPendingCall::timeout_added -->
+        <var-decl name='timeout_added' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='79' column='1'/>
+      </data-member>
+    </class-decl>
     <!-- void (DBusPendingCall*, void*)* -->
-    <pointer-type-def type-id='type-id-147' size-in-bits='64' id='type-id-142'/>
-    <!-- void* dbus_pending_call_get_data(DBusPendingCall*, dbus_int32_t) -->
-    <function-decl name='dbus_pending_call_get_data' mangled-name='dbus_pending_call_get_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='827' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_get_data'>
+    <pointer-type-def type-id='type-id-154' size-in-bits='64' id='type-id-153'/>
+    <!-- DBusPendingCall* dbus_pending_call_ref(DBusPendingCall*) -->
+    <function-decl name='dbus_pending_call_ref' mangled-name='dbus_pending_call_ref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='577' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_ref'>
       <!-- parameter of type 'DBusPendingCall*' -->
-      <parameter type-id='type-id-123' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='827' column='1'/>
-      <!-- parameter of type 'typedef dbus_int32_t' -->
-      <parameter type-id='type-id-81' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='828' column='1'/>
-      <!-- void* -->
-      <return type-id='type-id-10'/>
-    </function-decl>
-    <!-- DBusMessage* dbus_pending_call_steal_reply(DBusPendingCall*) -->
-    <function-decl name='dbus_pending_call_steal_reply' mangled-name='dbus_pending_call_steal_reply' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='702' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_steal_reply'>
-      <!-- parameter of type 'DBusPendingCall*' -->
-      <parameter type-id='type-id-123' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='702' column='1'/>
-      <!-- DBusMessage* -->
-      <return type-id='type-id-30'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_pending_call_get_completed(DBusPendingCall*) -->
-    <function-decl name='dbus_pending_call_get_completed' mangled-name='dbus_pending_call_get_completed' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='679' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_get_completed'>
-      <!-- parameter of type 'DBusPendingCall*' -->
-      <parameter type-id='type-id-123' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='679' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_pending_call_free_data_slot(dbus_int32_t*) -->
-    <function-decl name='dbus_pending_call_free_data_slot' mangled-name='dbus_pending_call_free_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='779' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_free_data_slot'>
-      <!-- parameter of type 'dbus_int32_t*' -->
-      <parameter type-id='type-id-131' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='779' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_pending_call_allocate_data_slot(dbus_int32_t*) -->
-    <function-decl name='dbus_pending_call_allocate_data_slot' mangled-name='dbus_pending_call_allocate_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='759' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_allocate_data_slot'>
-      <!-- parameter of type 'dbus_int32_t*' -->
-      <parameter type-id='type-id-131' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='759' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_pending_call_block(DBusPendingCall*) -->
-    <function-decl name='dbus_pending_call_block' mangled-name='dbus_pending_call_block' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='737' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_block'>
-      <!-- parameter of type 'DBusPendingCall*' -->
-      <parameter type-id='type-id-123' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='737' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void dbus_pending_call_cancel(DBusPendingCall*) -->
-    <function-decl name='dbus_pending_call_cancel' mangled-name='dbus_pending_call_cancel' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='663' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_cancel'>
-      <!-- parameter of type 'DBusPendingCall*' -->
-      <parameter type-id='type-id-123' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='663' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
+      <parameter type-id='type-id-117' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='577' column='1'/>
+      <!-- DBusPendingCall* -->
+      <return type-id='type-id-117'/>
     </function-decl>
     <!-- void dbus_pending_call_unref(DBusPendingCall*) -->
     <function-decl name='dbus_pending_call_unref' mangled-name='dbus_pending_call_unref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='597' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_unref'>
       <!-- parameter of type 'DBusPendingCall*' -->
-      <parameter type-id='type-id-123' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='597' column='1'/>
+      <parameter type-id='type-id-117' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='597' column='1'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- DBusPendingCall* dbus_pending_call_ref(DBusPendingCall*) -->
-    <function-decl name='dbus_pending_call_ref' mangled-name='dbus_pending_call_ref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='577' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_ref'>
-      <!-- parameter of type 'DBusPendingCall*' -->
-      <parameter type-id='type-id-123' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='577' column='1'/>
-      <!-- DBusPendingCall* -->
-      <return type-id='type-id-123'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_pending_call_set_data(DBusPendingCall*, dbus_int32_t, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_pending_call_set_data' mangled-name='dbus_pending_call_set_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='801' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_set_data'>
-      <!-- parameter of type 'DBusPendingCall*' -->
-      <parameter type-id='type-id-123' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='801' column='1'/>
-      <!-- parameter of type 'typedef dbus_int32_t' -->
-      <parameter type-id='type-id-81' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='802' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='803' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_func' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='804' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-24'/>
     </function-decl>
     <!-- dbus_bool_t dbus_pending_call_set_notify(DBusPendingCall*, DBusPendingCallNotifyFunction, void*, DBusFreeFunction) -->
     <function-decl name='dbus_pending_call_set_notify' mangled-name='dbus_pending_call_set_notify' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='622' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_set_notify'>
       <!-- parameter of type 'DBusPendingCall*' -->
-      <parameter type-id='type-id-123' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='622' column='1'/>
+      <parameter type-id='type-id-117' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='622' column='1'/>
       <!-- parameter of type 'typedef DBusPendingCallNotifyFunction' -->
-      <parameter type-id='type-id-89' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='623' column='1'/>
+      <parameter type-id='type-id-139' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='623' column='1'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='624' column='1'/>
+      <parameter type-id='type-id-8' name='user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='624' column='1'/>
       <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='625' column='1'/>
+      <parameter type-id='type-id-45' name='free_user_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='625' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_pending_call_cancel(DBusPendingCall*) -->
+    <function-decl name='dbus_pending_call_cancel' mangled-name='dbus_pending_call_cancel' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='663' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_cancel'>
+      <!-- parameter of type 'DBusPendingCall*' -->
+      <parameter type-id='type-id-117' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='663' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_pending_call_get_completed(DBusPendingCall*) -->
+    <function-decl name='dbus_pending_call_get_completed' mangled-name='dbus_pending_call_get_completed' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='679' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_get_completed'>
+      <!-- parameter of type 'DBusPendingCall*' -->
+      <parameter type-id='type-id-117' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='679' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- DBusMessage* dbus_pending_call_steal_reply(DBusPendingCall*) -->
+    <function-decl name='dbus_pending_call_steal_reply' mangled-name='dbus_pending_call_steal_reply' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='702' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_steal_reply'>
+      <!-- parameter of type 'DBusPendingCall*' -->
+      <parameter type-id='type-id-117' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='702' column='1'/>
+      <!-- DBusMessage* -->
+      <return type-id='type-id-37'/>
+    </function-decl>
+    <!-- void dbus_pending_call_block(DBusPendingCall*) -->
+    <function-decl name='dbus_pending_call_block' mangled-name='dbus_pending_call_block' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='737' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_block'>
+      <!-- parameter of type 'DBusPendingCall*' -->
+      <parameter type-id='type-id-117' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='737' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_pending_call_allocate_data_slot(dbus_int32_t*) -->
+    <function-decl name='dbus_pending_call_allocate_data_slot' mangled-name='dbus_pending_call_allocate_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='759' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_allocate_data_slot'>
+      <!-- parameter of type 'dbus_int32_t*' -->
+      <parameter type-id='type-id-126' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='759' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_pending_call_free_data_slot(dbus_int32_t*) -->
+    <function-decl name='dbus_pending_call_free_data_slot' mangled-name='dbus_pending_call_free_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='779' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_free_data_slot'>
+      <!-- parameter of type 'dbus_int32_t*' -->
+      <parameter type-id='type-id-126' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='779' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_pending_call_set_data(DBusPendingCall*, dbus_int32_t, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_pending_call_set_data' mangled-name='dbus_pending_call_set_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='801' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_set_data'>
+      <!-- parameter of type 'DBusPendingCall*' -->
+      <parameter type-id='type-id-117' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='801' column='1'/>
+      <!-- parameter of type 'typedef dbus_int32_t' -->
+      <parameter type-id='type-id-53' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='802' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='803' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_func' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='804' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void* dbus_pending_call_get_data(DBusPendingCall*, dbus_int32_t) -->
+    <function-decl name='dbus_pending_call_get_data' mangled-name='dbus_pending_call_get_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='827' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_pending_call_get_data'>
+      <!-- parameter of type 'DBusPendingCall*' -->
+      <parameter type-id='type-id-117' name='pending' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='827' column='1'/>
+      <!-- parameter of type 'typedef dbus_int32_t' -->
+      <parameter type-id='type-id-53' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-pending-call.c' line='828' column='1'/>
+      <!-- void* -->
+      <return type-id='type-id-8'/>
     </function-decl>
     <!-- void (DBusPendingCall*, void*) -->
-    <function-type size-in-bits='64' id='type-id-147'>
+    <function-type size-in-bits='64' id='type-id-154'>
       <!-- parameter of type 'DBusPendingCall*' -->
-      <parameter type-id='type-id-123'/>
+      <parameter type-id='type-id-117'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-type>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-server.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
     <!-- char[16] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='128' id='type-id-159'>
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='128' id='type-id-155'>
       <!-- <anonymous range>[16] -->
-      <subrange length='16' type-id='type-id-43' id='type-id-160'/>
+      <subrange length='16' type-id='type-id-26' id='type-id-156'/>
     </array-type-def>
     <!-- dbus_uint32_t[4] -->
-    <array-type-def dimensions='1' type-id='type-id-16' size-in-bits='128' id='type-id-161'>
+    <array-type-def dimensions='1' type-id='type-id-4' size-in-bits='128' id='type-id-157'>
       <!-- <anonymous range>[4] -->
-      <subrange length='4' type-id='type-id-43' id='type-id-162'/>
+      <subrange length='4' type-id='type-id-26' id='type-id-158'/>
     </array-type-def>
+    <!-- union DBusGUID -->
+    <union-decl name='DBusGUID' size-in-bits='128' visibility='default' filepath='../dbus/dbus-internals.h' line='351' column='1' id='type-id-159'>
+      <data-member access='public'>
+        <!-- dbus_uint32_t DBusGUID::as_uint32s[4] -->
+        <var-decl name='as_uint32s' type-id='type-id-157' visibility='default' filepath='../dbus/dbus-internals.h' line='352' column='1'/>
+      </data-member>
+      <data-member access='public'>
+        <!-- char DBusGUID::as_bytes[16] -->
+        <var-decl name='as_bytes' type-id='type-id-155' visibility='default' filepath='../dbus/dbus-internals.h' line='353' column='1'/>
+      </data-member>
+    </union-decl>
+    <!-- typedef DBusServerVTable DBusServerVTable -->
+    <typedef-decl name='DBusServerVTable' type-id='type-id-160' filepath='../dbus/dbus-server-protected.h' line='38' column='1' id='type-id-161'/>
+    <!-- struct DBusServerVTable -->
+    <class-decl name='DBusServerVTable' size-in-bits='128' is-struct='yes' visibility='default' filepath='../dbus/dbus-server-protected.h' line='44' column='1' id='type-id-160'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- void (DBusServer*)* DBusServerVTable::finalize -->
+        <var-decl name='finalize' type-id='type-id-162' visibility='default' filepath='../dbus/dbus-server-protected.h' line='45' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- void (DBusServer*)* DBusServerVTable::disconnect -->
+        <var-decl name='disconnect' type-id='type-id-162' visibility='default' filepath='../dbus/dbus-server-protected.h' line='48' column='1'/>
+      </data-member>
+    </class-decl>
     <!-- struct DBusServer -->
     <class-decl name='DBusServer' size-in-bits='1216' is-struct='yes' visibility='default' filepath='../dbus/dbus-server-protected.h' line='57' column='1' id='type-id-163'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- DBusAtomic DBusServer::refcount -->
-        <var-decl name='refcount' type-id='type-id-26' visibility='default' filepath='../dbus/dbus-server-protected.h' line='58' column='1'/>
+        <var-decl name='refcount' type-id='type-id-33' visibility='default' filepath='../dbus/dbus-server-protected.h' line='58' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- const DBusServerVTable* DBusServer::vtable -->
@@ -3383,7 +3387,7 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- DBusRMutex* DBusServer::mutex -->
-        <var-decl name='mutex' type-id='type-id-27' visibility='default' filepath='../dbus/dbus-server-protected.h' line='60' column='1'/>
+        <var-decl name='mutex' type-id='type-id-34' visibility='default' filepath='../dbus/dbus-server-protected.h' line='60' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- DBusGUID DBusServer::guid -->
@@ -3391,23 +3395,23 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- DBusString DBusServer::guid_hex -->
-        <var-decl name='guid_hex' type-id='type-id-7' visibility='default' filepath='../dbus/dbus-server-protected.h' line='64' column='1'/>
+        <var-decl name='guid_hex' type-id='type-id-10' visibility='default' filepath='../dbus/dbus-server-protected.h' line='64' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='512'>
         <!-- DBusWatchList* DBusServer::watches -->
-        <var-decl name='watches' type-id='type-id-33' visibility='default' filepath='../dbus/dbus-server-protected.h' line='66' column='1'/>
+        <var-decl name='watches' type-id='type-id-40' visibility='default' filepath='../dbus/dbus-server-protected.h' line='66' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='576'>
         <!-- DBusTimeoutList* DBusServer::timeouts -->
-        <var-decl name='timeouts' type-id='type-id-34' visibility='default' filepath='../dbus/dbus-server-protected.h' line='67' column='1'/>
+        <var-decl name='timeouts' type-id='type-id-41' visibility='default' filepath='../dbus/dbus-server-protected.h' line='67' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='640'>
         <!-- char* DBusServer::address -->
-        <var-decl name='address' type-id='type-id-22' visibility='default' filepath='../dbus/dbus-server-protected.h' line='69' column='1'/>
+        <var-decl name='address' type-id='type-id-21' visibility='default' filepath='../dbus/dbus-server-protected.h' line='69' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='704'>
         <!-- dbus_bool_t DBusServer::published_address -->
-        <var-decl name='published_address' type-id='type-id-17' visibility='default' filepath='../dbus/dbus-server-protected.h' line='70' column='1'/>
+        <var-decl name='published_address' type-id='type-id-13' visibility='default' filepath='../dbus/dbus-server-protected.h' line='70' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='736'>
         <!-- int DBusServer::max_connections -->
@@ -3415,7 +3419,7 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='768'>
         <!-- DBusDataSlotList DBusServer::slot_list -->
-        <var-decl name='slot_list' type-id='type-id-35' visibility='default' filepath='../dbus/dbus-server-protected.h' line='74' column='1'/>
+        <var-decl name='slot_list' type-id='type-id-42' visibility='default' filepath='../dbus/dbus-server-protected.h' line='74' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='896'>
         <!-- DBusNewConnectionFunction DBusServer::new_connection_function -->
@@ -3423,777 +3427,831 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='960'>
         <!-- void* DBusServer::new_connection_data -->
-        <var-decl name='new_connection_data' type-id='type-id-10' visibility='default' filepath='../dbus/dbus-server-protected.h' line='78' column='1'/>
+        <var-decl name='new_connection_data' type-id='type-id-8' visibility='default' filepath='../dbus/dbus-server-protected.h' line='78' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1024'>
         <!-- DBusFreeFunction DBusServer::new_connection_free_data_function -->
-        <var-decl name='new_connection_free_data_function' type-id='type-id-38' visibility='default' filepath='../dbus/dbus-server-protected.h' line='80' column='1'/>
+        <var-decl name='new_connection_free_data_function' type-id='type-id-45' visibility='default' filepath='../dbus/dbus-server-protected.h' line='80' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1088'>
         <!-- char** DBusServer::auth_mechanisms -->
-        <var-decl name='auth_mechanisms' type-id='type-id-127' visibility='default' filepath='../dbus/dbus-server-protected.h' line='85' column='1'/>
+        <var-decl name='auth_mechanisms' type-id='type-id-122' visibility='default' filepath='../dbus/dbus-server-protected.h' line='85' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
+      <data-member access='public' layout-offset-in-bits='1152'>
         <!-- unsigned int DBusServer::disconnected -->
         <var-decl name='disconnected' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-server-protected.h' line='87' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='1'>
+      <data-member access='public' layout-offset-in-bits='1153'>
         <!-- unsigned int DBusServer::have_server_lock -->
         <var-decl name='have_server_lock' type-id='type-id-3' visibility='default' filepath='../dbus/dbus-server-protected.h' line='90' column='1'/>
       </data-member>
     </class-decl>
-    <!-- typedef DBusServerVTable DBusServerVTable -->
-    <typedef-decl name='DBusServerVTable' type-id='type-id-167' filepath='../dbus/dbus-server-protected.h' line='38' column='1' id='type-id-168'/>
-    <!-- struct DBusServerVTable -->
-    <class-decl name='DBusServerVTable' size-in-bits='128' is-struct='yes' visibility='default' filepath='../dbus/dbus-server-protected.h' line='44' column='1' id='type-id-167'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- void (DBusServer*)* DBusServerVTable::finalize -->
-        <var-decl name='finalize' type-id='type-id-169' visibility='default' filepath='../dbus/dbus-server-protected.h' line='45' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- void (DBusServer*)* DBusServerVTable::disconnect -->
-        <var-decl name='disconnect' type-id='type-id-169' visibility='default' filepath='../dbus/dbus-server-protected.h' line='48' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef DBusServer DBusServer -->
-    <typedef-decl name='DBusServer' type-id='type-id-163' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.h' line='42' column='1' id='type-id-170'/>
     <!-- typedef DBusGUID DBusGUID -->
-    <typedef-decl name='DBusGUID' type-id='type-id-171' filepath='../dbus/dbus-sysdeps.h' line='507' column='1' id='type-id-165'/>
-    <!-- union DBusGUID -->
-    <union-decl name='DBusGUID' size-in-bits='128' visibility='default' filepath='../dbus/dbus-internals.h' line='351' column='1' id='type-id-171'>
-      <data-member access='public'>
-        <!-- dbus_uint32_t DBusGUID::as_uint32s[4] -->
-        <var-decl name='as_uint32s' type-id='type-id-161' visibility='default' filepath='../dbus/dbus-internals.h' line='352' column='1'/>
-      </data-member>
-      <data-member access='public'>
-        <!-- char DBusGUID::as_bytes[16] -->
-        <var-decl name='as_bytes' type-id='type-id-159' visibility='default' filepath='../dbus/dbus-internals.h' line='353' column='1'/>
-      </data-member>
-    </union-decl>
+    <typedef-decl name='DBusGUID' type-id='type-id-159' filepath='../dbus/dbus-sysdeps.h' line='507' column='1' id='type-id-165'/>
+    <!-- typedef DBusServer DBusServer -->
+    <typedef-decl name='DBusServer' type-id='type-id-163' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.h' line='42' column='1' id='type-id-167'/>
     <!-- typedef void (DBusServer*, DBusConnection*, void*)* DBusNewConnectionFunction -->
-    <typedef-decl name='DBusNewConnectionFunction' type-id='type-id-172' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.h' line='47' column='1' id='type-id-166'/>
+    <typedef-decl name='DBusNewConnectionFunction' type-id='type-id-168' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.h' line='47' column='1' id='type-id-166'/>
     <!-- DBusServer* -->
-    <pointer-type-def type-id='type-id-170' size-in-bits='64' id='type-id-173'/>
+    <pointer-type-def type-id='type-id-167' size-in-bits='64' id='type-id-169'/>
     <!-- const DBusServerVTable -->
-    <qualified-type-def type-id='type-id-168' const='yes' id='type-id-174'/>
+    <qualified-type-def type-id='type-id-161' const='yes' id='type-id-170'/>
     <!-- const DBusServerVTable* -->
-    <pointer-type-def type-id='type-id-174' size-in-bits='64' id='type-id-164'/>
+    <pointer-type-def type-id='type-id-170' size-in-bits='64' id='type-id-164'/>
     <!-- const char** -->
-    <pointer-type-def type-id='type-id-15' size-in-bits='64' id='type-id-175'/>
+    <pointer-type-def type-id='type-id-7' size-in-bits='64' id='type-id-171'/>
     <!-- void (DBusServer*)* -->
-    <pointer-type-def type-id='type-id-176' size-in-bits='64' id='type-id-169'/>
+    <pointer-type-def type-id='type-id-172' size-in-bits='64' id='type-id-162'/>
     <!-- void (DBusServer*, DBusConnection*, void*)* -->
-    <pointer-type-def type-id='type-id-177' size-in-bits='64' id='type-id-172'/>
-    <!-- void* dbus_server_get_data(DBusServer*, int) -->
-    <function-decl name='dbus_server_get_data' mangled-name='dbus_server_get_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1156' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_get_data'>
-      <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1156' column='1'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1157' column='1'/>
-      <!-- void* -->
-      <return type-id='type-id-10'/>
-    </function-decl>
-    <!-- void dbus_server_set_new_connection_function(DBusServer*, DBusNewConnectionFunction, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_server_set_new_connection_function' mangled-name='dbus_server_set_new_connection_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='889' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_set_new_connection_function'>
-      <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='889' column='1'/>
-      <!-- parameter of type 'typedef DBusNewConnectionFunction' -->
-      <parameter type-id='type-id-166' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='890' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='891' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='892' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_server_get_is_connected(DBusServer*) -->
-    <function-decl name='dbus_server_get_is_connected' mangled-name='dbus_server_get_is_connected' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='797' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_get_is_connected'>
-      <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='797' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_server_set_data(DBusServer*, int, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_server_set_data' mangled-name='dbus_server_set_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1116' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_set_data'>
-      <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1116' column='1'/>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1117' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1118' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_func' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1119' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_server_free_data_slot(dbus_int32_t*) -->
-    <function-decl name='dbus_server_free_data_slot' mangled-name='dbus_server_free_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1095' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_free_data_slot'>
-      <!-- parameter of type 'dbus_int32_t*' -->
-      <parameter type-id='type-id-131' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1095' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_server_allocate_data_slot(dbus_int32_t*) -->
-    <function-decl name='dbus_server_allocate_data_slot' mangled-name='dbus_server_allocate_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1077' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_allocate_data_slot'>
-      <!-- parameter of type 'dbus_int32_t*' -->
-      <parameter type-id='type-id-131' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1077' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_server_set_auth_mechanisms(DBusServer*, const char**) -->
-    <function-decl name='dbus_server_set_auth_mechanisms' mangled-name='dbus_server_set_auth_mechanisms' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1033' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_set_auth_mechanisms'>
-      <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1033' column='1'/>
-      <!-- parameter of type 'const char**' -->
-      <parameter type-id='type-id-175' name='mechanisms' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1034' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_server_set_timeout_functions(DBusServer*, DBusAddTimeoutFunction, DBusRemoveTimeoutFunction, DBusTimeoutToggledFunction, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_server_set_timeout_functions' mangled-name='dbus_server_set_timeout_functions' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='982' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_set_timeout_functions'>
-      <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='982' column='1'/>
-      <!-- parameter of type 'typedef DBusAddTimeoutFunction' -->
-      <parameter type-id='type-id-109' name='add_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='983' column='1'/>
-      <!-- parameter of type 'typedef DBusRemoveTimeoutFunction' -->
-      <parameter type-id='type-id-112' name='remove_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='984' column='1'/>
-      <!-- parameter of type 'typedef DBusTimeoutToggledFunction' -->
-      <parameter type-id='type-id-113' name='toggled_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='985' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='986' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='987' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_server_set_watch_functions(DBusServer*, DBusAddWatchFunction, DBusRemoveWatchFunction, DBusWatchToggledFunction, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_server_set_watch_functions' mangled-name='dbus_server_set_watch_functions' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='929' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_set_watch_functions'>
-      <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='929' column='1'/>
-      <!-- parameter of type 'typedef DBusAddWatchFunction' -->
-      <parameter type-id='type-id-115' name='add_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='930' column='1'/>
-      <!-- parameter of type 'typedef DBusRemoveWatchFunction' -->
-      <parameter type-id='type-id-118' name='remove_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='931' column='1'/>
-      <!-- parameter of type 'typedef DBusWatchToggledFunction' -->
-      <parameter type-id='type-id-119' name='toggled_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='932' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='933' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='934' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- char* dbus_server_get_id(DBusServer*) -->
-    <function-decl name='dbus_server_get_id' mangled-name='dbus_server_get_id' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='854' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_get_id'>
-      <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='854' column='1'/>
-      <!-- char* -->
-      <return type-id='type-id-22'/>
-    </function-decl>
-    <!-- char* dbus_server_get_address(DBusServer*) -->
-    <function-decl name='dbus_server_get_address' mangled-name='dbus_server_get_address' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='818' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_get_address'>
-      <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='818' column='1'/>
-      <!-- char* -->
-      <return type-id='type-id-22'/>
-    </function-decl>
-    <!-- void dbus_server_unref(DBusServer*) -->
-    <function-decl name='dbus_server_unref' mangled-name='dbus_server_unref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='720' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_unref'>
-      <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='720' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
+    <pointer-type-def type-id='type-id-173' size-in-bits='64' id='type-id-168'/>
+    <!-- DBusServer* dbus_server_listen(const char*, DBusError*) -->
+    <function-decl name='dbus_server_listen' mangled-name='dbus_server_listen' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='549' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_listen'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='address' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='549' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='550' column='1'/>
+      <!-- DBusServer* -->
+      <return type-id='type-id-169'/>
     </function-decl>
     <!-- DBusServer* dbus_server_ref(DBusServer*) -->
     <function-decl name='dbus_server_ref' mangled-name='dbus_server_ref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='687' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_ref'>
       <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='687' column='1'/>
+      <parameter type-id='type-id-169' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='687' column='1'/>
       <!-- DBusServer* -->
-      <return type-id='type-id-173'/>
+      <return type-id='type-id-169'/>
+    </function-decl>
+    <!-- void dbus_server_unref(DBusServer*) -->
+    <function-decl name='dbus_server_unref' mangled-name='dbus_server_unref' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='720' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_unref'>
+      <!-- parameter of type 'DBusServer*' -->
+      <parameter type-id='type-id-169' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='720' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
     </function-decl>
     <!-- void dbus_server_disconnect(DBusServer*) -->
     <function-decl name='dbus_server_disconnect' mangled-name='dbus_server_disconnect' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='770' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_disconnect'>
       <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='770' column='1'/>
+      <parameter type-id='type-id-169' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='770' column='1'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-decl>
-    <!-- DBusServer* dbus_server_listen(const char*, DBusError*) -->
-    <function-decl name='dbus_server_listen' mangled-name='dbus_server_listen' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='549' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_listen'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='address' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='549' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='550' column='1'/>
-      <!-- DBusServer* -->
-      <return type-id='type-id-173'/>
+    <!-- dbus_bool_t dbus_server_get_is_connected(DBusServer*) -->
+    <function-decl name='dbus_server_get_is_connected' mangled-name='dbus_server_get_is_connected' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='797' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_get_is_connected'>
+      <!-- parameter of type 'DBusServer*' -->
+      <parameter type-id='type-id-169' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='797' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- char* dbus_server_get_address(DBusServer*) -->
+    <function-decl name='dbus_server_get_address' mangled-name='dbus_server_get_address' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='818' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_get_address'>
+      <!-- parameter of type 'DBusServer*' -->
+      <parameter type-id='type-id-169' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='818' column='1'/>
+      <!-- char* -->
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <!-- char* dbus_server_get_id(DBusServer*) -->
+    <function-decl name='dbus_server_get_id' mangled-name='dbus_server_get_id' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='854' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_get_id'>
+      <!-- parameter of type 'DBusServer*' -->
+      <parameter type-id='type-id-169' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='854' column='1'/>
+      <!-- char* -->
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <!-- void dbus_server_set_new_connection_function(DBusServer*, DBusNewConnectionFunction, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_server_set_new_connection_function' mangled-name='dbus_server_set_new_connection_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='889' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_set_new_connection_function'>
+      <!-- parameter of type 'DBusServer*' -->
+      <parameter type-id='type-id-169' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='889' column='1'/>
+      <!-- parameter of type 'typedef DBusNewConnectionFunction' -->
+      <parameter type-id='type-id-166' name='function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='890' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='891' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='892' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_server_set_watch_functions(DBusServer*, DBusAddWatchFunction, DBusRemoveWatchFunction, DBusWatchToggledFunction, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_server_set_watch_functions' mangled-name='dbus_server_set_watch_functions' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='929' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_set_watch_functions'>
+      <!-- parameter of type 'DBusServer*' -->
+      <parameter type-id='type-id-169' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='929' column='1'/>
+      <!-- parameter of type 'typedef DBusAddWatchFunction' -->
+      <parameter type-id='type-id-86' name='add_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='930' column='1'/>
+      <!-- parameter of type 'typedef DBusRemoveWatchFunction' -->
+      <parameter type-id='type-id-89' name='remove_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='931' column='1'/>
+      <!-- parameter of type 'typedef DBusWatchToggledFunction' -->
+      <parameter type-id='type-id-88' name='toggled_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='932' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='933' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='934' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_server_set_timeout_functions(DBusServer*, DBusAddTimeoutFunction, DBusRemoveTimeoutFunction, DBusTimeoutToggledFunction, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_server_set_timeout_functions' mangled-name='dbus_server_set_timeout_functions' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='982' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_set_timeout_functions'>
+      <!-- parameter of type 'DBusServer*' -->
+      <parameter type-id='type-id-169' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='982' column='1'/>
+      <!-- parameter of type 'typedef DBusAddTimeoutFunction' -->
+      <parameter type-id='type-id-91' name='add_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='983' column='1'/>
+      <!-- parameter of type 'typedef DBusRemoveTimeoutFunction' -->
+      <parameter type-id='type-id-94' name='remove_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='984' column='1'/>
+      <!-- parameter of type 'typedef DBusTimeoutToggledFunction' -->
+      <parameter type-id='type-id-93' name='toggled_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='985' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='986' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='987' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_server_set_auth_mechanisms(DBusServer*, const char**) -->
+    <function-decl name='dbus_server_set_auth_mechanisms' mangled-name='dbus_server_set_auth_mechanisms' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1033' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_set_auth_mechanisms'>
+      <!-- parameter of type 'DBusServer*' -->
+      <parameter type-id='type-id-169' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1033' column='1'/>
+      <!-- parameter of type 'const char**' -->
+      <parameter type-id='type-id-171' name='mechanisms' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1034' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_server_allocate_data_slot(dbus_int32_t*) -->
+    <function-decl name='dbus_server_allocate_data_slot' mangled-name='dbus_server_allocate_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1077' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_allocate_data_slot'>
+      <!-- parameter of type 'dbus_int32_t*' -->
+      <parameter type-id='type-id-126' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1077' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_server_free_data_slot(dbus_int32_t*) -->
+    <function-decl name='dbus_server_free_data_slot' mangled-name='dbus_server_free_data_slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1095' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_free_data_slot'>
+      <!-- parameter of type 'dbus_int32_t*' -->
+      <parameter type-id='type-id-126' name='slot_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1095' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_server_set_data(DBusServer*, int, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_server_set_data' mangled-name='dbus_server_set_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1116' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_set_data'>
+      <!-- parameter of type 'DBusServer*' -->
+      <parameter type-id='type-id-169' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1116' column='1'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1117' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1118' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_func' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1119' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void* dbus_server_get_data(DBusServer*, int) -->
+    <function-decl name='dbus_server_get_data' mangled-name='dbus_server_get_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1156' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_server_get_data'>
+      <!-- parameter of type 'DBusServer*' -->
+      <parameter type-id='type-id-169' name='server' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1156' column='1'/>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='slot' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-server.c' line='1157' column='1'/>
+      <!-- void* -->
+      <return type-id='type-id-8'/>
     </function-decl>
     <!-- void (DBusServer*) -->
-    <function-type size-in-bits='64' id='type-id-176'>
+    <function-type size-in-bits='64' id='type-id-172'>
       <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173'/>
+      <parameter type-id='type-id-169'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-type>
     <!-- void (DBusServer*, DBusConnection*, void*) -->
-    <function-type size-in-bits='64' id='type-id-177'>
+    <function-type size-in-bits='64' id='type-id-173'>
       <!-- parameter of type 'DBusServer*' -->
-      <parameter type-id='type-id-173'/>
+      <parameter type-id='type-id-169'/>
       <!-- parameter of type 'DBusConnection*' -->
-      <parameter type-id='type-id-47'/>
+      <parameter type-id='type-id-31'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-type>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-signature.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
-    <!-- typedef __anonymous_struct__ DBusSignatureIter -->
-    <typedef-decl name='DBusSignatureIter' type-id='type-id-178' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='51' column='1' id='type-id-179'/>
-    <!-- struct {void* dummy1; void* dummy2; dbus_uint32_t dummy8; int dummy12; int dummy17;} -->
-    <class-decl name='__anonymous_struct__' size-in-bits='256' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-179' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='45' column='1' id='type-id-178'>
+    <!-- struct DBusSignatureIter -->
+    <class-decl name='DBusSignatureIter' size-in-bits='256' is-struct='yes' naming-typedef-id='type-id-174' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='45' column='1' id='type-id-175'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- void* dummy1 -->
-        <var-decl name='dummy1' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='46' column='1'/>
+        <!-- void* DBusSignatureIter::dummy1 -->
+        <var-decl name='dummy1' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='46' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- void* dummy2 -->
-        <var-decl name='dummy2' type-id='type-id-10' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='47' column='1'/>
+        <!-- void* DBusSignatureIter::dummy2 -->
+        <var-decl name='dummy2' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='47' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
-        <!-- dbus_uint32_t dummy8 -->
-        <var-decl name='dummy8' type-id='type-id-16' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='48' column='1'/>
+        <!-- dbus_uint32_t DBusSignatureIter::dummy8 -->
+        <var-decl name='dummy8' type-id='type-id-4' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='48' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int dummy12 -->
+        <!-- int DBusSignatureIter::dummy12 -->
         <var-decl name='dummy12' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='49' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
-        <!-- int dummy17 -->
+        <!-- int DBusSignatureIter::dummy17 -->
         <var-decl name='dummy17' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='50' column='1'/>
       </data-member>
     </class-decl>
+    <!-- typedef DBusSignatureIter DBusSignatureIter -->
+    <typedef-decl name='DBusSignatureIter' type-id='type-id-175' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.h' line='51' column='1' id='type-id-174'/>
     <!-- DBusSignatureIter* -->
-    <pointer-type-def type-id='type-id-179' size-in-bits='64' id='type-id-180'/>
+    <pointer-type-def type-id='type-id-174' size-in-bits='64' id='type-id-176'/>
     <!-- const DBusSignatureIter -->
-    <qualified-type-def type-id='type-id-179' const='yes' id='type-id-181'/>
+    <qualified-type-def type-id='type-id-174' const='yes' id='type-id-177'/>
     <!-- const DBusSignatureIter* -->
-    <pointer-type-def type-id='type-id-181' size-in-bits='64' id='type-id-182'/>
+    <pointer-type-def type-id='type-id-177' size-in-bits='64' id='type-id-178'/>
     <!-- void dbus_signature_iter_init(DBusSignatureIter*, const char*) -->
     <function-decl name='dbus_signature_iter_init' mangled-name='dbus_signature_iter_init' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='67' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_iter_init'>
       <!-- parameter of type 'DBusSignatureIter*' -->
-      <parameter type-id='type-id-180' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='67' column='1'/>
+      <parameter type-id='type-id-176' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='67' column='1'/>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='68' column='1'/>
+      <parameter type-id='type-id-7' name='signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='68' column='1'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_type_is_valid(int) -->
-    <function-decl name='dbus_type_is_valid' mangled-name='dbus_type_is_valid' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='383' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_type_is_valid'>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='typecode' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='383' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_type_is_fixed(int) -->
-    <function-decl name='dbus_type_is_fixed' mangled-name='dbus_type_is_fixed' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='349' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_type_is_fixed'>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='typecode' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='349' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_type_is_basic(int) -->
-    <function-decl name='dbus_type_is_basic' mangled-name='dbus_type_is_basic' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='318' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_type_is_basic'>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='typecode' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='318' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_type_is_container(int) -->
-    <function-decl name='dbus_type_is_container' mangled-name='dbus_type_is_container' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='294' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_type_is_container'>
-      <!-- parameter of type 'int' -->
-      <parameter type-id='type-id-2' name='typecode' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='294' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_signature_validate(const char*, DBusError*) -->
-    <function-decl name='dbus_signature_validate' mangled-name='dbus_signature_validate' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='233' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_validate'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='233' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='234' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_signature_iter_next(DBusSignatureIter*) -->
-    <function-decl name='dbus_signature_iter_next' mangled-name='dbus_signature_iter_next' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='164' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_iter_next'>
-      <!-- parameter of type 'DBusSignatureIter*' -->
-      <parameter type-id='type-id-180' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='164' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-24'/>
     </function-decl>
     <!-- int dbus_signature_iter_get_current_type(const DBusSignatureIter*) -->
     <function-decl name='dbus_signature_iter_get_current_type' mangled-name='dbus_signature_iter_get_current_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='92' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_iter_get_current_type'>
       <!-- parameter of type 'const DBusSignatureIter*' -->
-      <parameter type-id='type-id-182' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='92' column='1'/>
-      <!-- int -->
-      <return type-id='type-id-2'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_signature_validate_single(const char*, DBusError*) -->
-    <function-decl name='dbus_signature_validate_single' mangled-name='dbus_signature_validate_single' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='264' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_validate_single'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='264' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='265' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_signature_iter_recurse(const DBusSignatureIter*, DBusSignatureIter*) -->
-    <function-decl name='dbus_signature_iter_recurse' mangled-name='dbus_signature_iter_recurse' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='207' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_iter_recurse'>
-      <!-- parameter of type 'const DBusSignatureIter*' -->
-      <parameter type-id='type-id-182' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='207' column='1'/>
-      <!-- parameter of type 'DBusSignatureIter*' -->
-      <parameter type-id='type-id-180' name='subiter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='208' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- int dbus_signature_iter_get_element_type(const DBusSignatureIter*) -->
-    <function-decl name='dbus_signature_iter_get_element_type' mangled-name='dbus_signature_iter_get_element_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='146' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_iter_get_element_type'>
-      <!-- parameter of type 'const DBusSignatureIter*' -->
-      <parameter type-id='type-id-182' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='146' column='1'/>
+      <parameter type-id='type-id-178' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='92' column='1'/>
       <!-- int -->
       <return type-id='type-id-2'/>
     </function-decl>
     <!-- char* dbus_signature_iter_get_signature(const DBusSignatureIter*) -->
     <function-decl name='dbus_signature_iter_get_signature' mangled-name='dbus_signature_iter_get_signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='112' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_iter_get_signature'>
       <!-- parameter of type 'const DBusSignatureIter*' -->
-      <parameter type-id='type-id-182' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='112' column='1'/>
+      <parameter type-id='type-id-178' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='112' column='1'/>
       <!-- char* -->
-      <return type-id='type-id-22'/>
+      <return type-id='type-id-21'/>
+    </function-decl>
+    <!-- int dbus_signature_iter_get_element_type(const DBusSignatureIter*) -->
+    <function-decl name='dbus_signature_iter_get_element_type' mangled-name='dbus_signature_iter_get_element_type' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='146' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_iter_get_element_type'>
+      <!-- parameter of type 'const DBusSignatureIter*' -->
+      <parameter type-id='type-id-178' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='146' column='1'/>
+      <!-- int -->
+      <return type-id='type-id-2'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_signature_iter_next(DBusSignatureIter*) -->
+    <function-decl name='dbus_signature_iter_next' mangled-name='dbus_signature_iter_next' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='164' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_iter_next'>
+      <!-- parameter of type 'DBusSignatureIter*' -->
+      <parameter type-id='type-id-176' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='164' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- void dbus_signature_iter_recurse(const DBusSignatureIter*, DBusSignatureIter*) -->
+    <function-decl name='dbus_signature_iter_recurse' mangled-name='dbus_signature_iter_recurse' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='207' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_iter_recurse'>
+      <!-- parameter of type 'const DBusSignatureIter*' -->
+      <parameter type-id='type-id-178' name='iter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='207' column='1'/>
+      <!-- parameter of type 'DBusSignatureIter*' -->
+      <parameter type-id='type-id-176' name='subiter' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='208' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_signature_validate(const char*, DBusError*) -->
+    <function-decl name='dbus_signature_validate' mangled-name='dbus_signature_validate' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='233' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_validate'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='233' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='234' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_signature_validate_single(const char*, DBusError*) -->
+    <function-decl name='dbus_signature_validate_single' mangled-name='dbus_signature_validate_single' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='264' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_signature_validate_single'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='signature' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='264' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='265' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_type_is_container(int) -->
+    <function-decl name='dbus_type_is_container' mangled-name='dbus_type_is_container' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='294' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_type_is_container'>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='typecode' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='294' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_type_is_basic(int) -->
+    <function-decl name='dbus_type_is_basic' mangled-name='dbus_type_is_basic' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='318' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_type_is_basic'>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='typecode' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='318' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_type_is_fixed(int) -->
+    <function-decl name='dbus_type_is_fixed' mangled-name='dbus_type_is_fixed' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='349' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_type_is_fixed'>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='typecode' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='349' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_type_is_valid(int) -->
+    <function-decl name='dbus_type_is_valid' mangled-name='dbus_type_is_valid' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='383' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_type_is_valid'>
+      <!-- parameter of type 'int' -->
+      <parameter type-id='type-id-2' name='typecode' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-signature.c' line='383' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
     </function-decl>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-syntax.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
-    <!-- dbus_bool_t dbus_validate_utf8(const char*, DBusError*) -->
-    <function-decl name='dbus_validate_utf8' mangled-name='dbus_validate_utf8' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='289' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_validate_utf8'>
+    <!-- dbus_bool_t dbus_validate_path(const char*, DBusError*) -->
+    <function-decl name='dbus_validate_path' mangled-name='dbus_validate_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='54' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_validate_path'>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='alleged_utf8' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='289' column='1'/>
+      <parameter type-id='type-id-7' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='54' column='1'/>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='290' column='1'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='55' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_validate_bus_name(const char*, DBusError*) -->
-    <function-decl name='dbus_validate_bus_name' mangled-name='dbus_validate_bus_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='242' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_validate_bus_name'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='242' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='243' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_validate_error_name(const char*, DBusError*) -->
-    <function-decl name='dbus_validate_error_name' mangled-name='dbus_validate_error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='195' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_validate_error_name'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='195' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='196' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_validate_member(const char*, DBusError*) -->
-    <function-decl name='dbus_validate_member' mangled-name='dbus_validate_member' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='148' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_validate_member'>
-      <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='148' column='1'/>
-      <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='149' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-decl>
     <!-- dbus_bool_t dbus_validate_interface(const char*, DBusError*) -->
     <function-decl name='dbus_validate_interface' mangled-name='dbus_validate_interface' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='101' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_validate_interface'>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='101' column='1'/>
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='101' column='1'/>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='102' column='1'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='102' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-decl>
-    <!-- dbus_bool_t dbus_validate_path(const char*, DBusError*) -->
-    <function-decl name='dbus_validate_path' mangled-name='dbus_validate_path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='54' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_validate_path'>
+    <!-- dbus_bool_t dbus_validate_member(const char*, DBusError*) -->
+    <function-decl name='dbus_validate_member' mangled-name='dbus_validate_member' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='148' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_validate_member'>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='path' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='54' column='1'/>
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='148' column='1'/>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='55' column='1'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='149' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_validate_error_name(const char*, DBusError*) -->
+    <function-decl name='dbus_validate_error_name' mangled-name='dbus_validate_error_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='195' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_validate_error_name'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='195' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='196' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_validate_bus_name(const char*, DBusError*) -->
+    <function-decl name='dbus_validate_bus_name' mangled-name='dbus_validate_bus_name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='242' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_validate_bus_name'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='name' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='242' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='243' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_validate_utf8(const char*, DBusError*) -->
+    <function-decl name='dbus_validate_utf8' mangled-name='dbus_validate_utf8' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='289' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_validate_utf8'>
+      <!-- parameter of type 'const char*' -->
+      <parameter type-id='type-id-7' name='alleged_utf8' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='289' column='1'/>
+      <!-- parameter of type 'DBusError*' -->
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-syntax.c' line='290' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
     </function-decl>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-sysdeps.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
     <!-- dbus_bool_t dbus_setenv(const char*, const char*) -->
     <function-decl name='dbus_setenv' mangled-name='dbus_setenv' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-sysdeps.c' line='114' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_setenv'>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='varname' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-sysdeps.c' line='114' column='1'/>
+      <parameter type-id='type-id-7' name='varname' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-sysdeps.c' line='114' column='1'/>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-sysdeps.c' line='115' column='1'/>
+      <parameter type-id='type-id-7' name='value' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-sysdeps.c' line='115' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-decl>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-threads.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
-    <!-- struct DBusMutex -->
-    <class-decl name='DBusMutex' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-183'/>
-    <!-- typedef __anonymous_struct__ DBusThreadFunctions -->
-    <typedef-decl name='DBusThreadFunctions' type-id='type-id-184' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='178' column='1' id='type-id-185'/>
-    <!-- struct {unsigned int mask; DBusMutexNewFunction mutex_new; DBusMutexFreeFunction mutex_free; DBusMutexLockFunction mutex_lock; DBusMutexUnlockFunction mutex_unlock; DBusCondVarNewFunction condvar_new; DBusCondVarFreeFunction condvar_free; DBusCondVarWaitFunction condvar_wait; DBusCondVarWaitTimeoutFunction condvar_wait_timeout; DBusCondVarWakeOneFunction condvar_wake_one; DBusCondVarWakeAllFunction condvar_wake_all; DBusRecursiveMutexNewFunction recursive_mutex_new; DBusRecursiveMutexFreeFunction recursive_mutex_free; DBusRecursiveMutexLockFunction recursive_mutex_lock; DBusRecursiveMutexUnlockFunction recursive_mutex_unlock; void ()* padding1; void ()* padding2; void ()* padding3; void ()* padding4;} -->
-    <class-decl name='__anonymous_struct__' size-in-bits='1216' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-185' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='153' column='1' id='type-id-184'>
+    <!-- typedef DBusMutex DBusMutex -->
+    <typedef-decl name='DBusMutex' type-id='type-id-179' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='41' column='1' id='type-id-180'/>
+    <!-- typedef DBusMutex* ()* DBusMutexNewFunction -->
+    <typedef-decl name='DBusMutexNewFunction' type-id='type-id-181' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='46' column='1' id='type-id-182'/>
+    <!-- typedef void (DBusMutex*)* DBusMutexFreeFunction -->
+    <typedef-decl name='DBusMutexFreeFunction' type-id='type-id-183' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='48' column='1' id='type-id-184'/>
+    <!-- typedef typedef dbus_bool_t (DBusMutex*)* DBusMutexLockFunction -->
+    <typedef-decl name='DBusMutexLockFunction' type-id='type-id-185' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='50' column='1' id='type-id-186'/>
+    <!-- typedef typedef dbus_bool_t (DBusMutex*)* DBusMutexUnlockFunction -->
+    <typedef-decl name='DBusMutexUnlockFunction' type-id='type-id-185' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='52' column='1' id='type-id-187'/>
+    <!-- typedef DBusMutex* ()* DBusRecursiveMutexNewFunction -->
+    <typedef-decl name='DBusRecursiveMutexNewFunction' type-id='type-id-181' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='61' column='1' id='type-id-188'/>
+    <!-- typedef void (DBusMutex*)* DBusRecursiveMutexFreeFunction -->
+    <typedef-decl name='DBusRecursiveMutexFreeFunction' type-id='type-id-183' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='64' column='1' id='type-id-189'/>
+    <!-- typedef void (DBusMutex*)* DBusRecursiveMutexLockFunction -->
+    <typedef-decl name='DBusRecursiveMutexLockFunction' type-id='type-id-183' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='68' column='1' id='type-id-190'/>
+    <!-- typedef void (DBusMutex*)* DBusRecursiveMutexUnlockFunction -->
+    <typedef-decl name='DBusRecursiveMutexUnlockFunction' type-id='type-id-183' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='72' column='1' id='type-id-191'/>
+    <!-- typedef DBusCondVar* ()* DBusCondVarNewFunction -->
+    <typedef-decl name='DBusCondVarNewFunction' type-id='type-id-192' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='77' column='1' id='type-id-193'/>
+    <!-- typedef void (DBusCondVar*)* DBusCondVarFreeFunction -->
+    <typedef-decl name='DBusCondVarFreeFunction' type-id='type-id-194' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='80' column='1' id='type-id-195'/>
+    <!-- typedef void (DBusCondVar*, DBusMutex*)* DBusCondVarWaitFunction -->
+    <typedef-decl name='DBusCondVarWaitFunction' type-id='type-id-196' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='92' column='1' id='type-id-197'/>
+    <!-- typedef typedef dbus_bool_t (DBusCondVar*, DBusMutex*, int)* DBusCondVarWaitTimeoutFunction -->
+    <typedef-decl name='DBusCondVarWaitTimeoutFunction' type-id='type-id-198' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='101' column='1' id='type-id-199'/>
+    <!-- typedef void (DBusCondVar*)* DBusCondVarWakeOneFunction -->
+    <typedef-decl name='DBusCondVarWakeOneFunction' type-id='type-id-194' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='108' column='1' id='type-id-200'/>
+    <!-- typedef void (DBusCondVar*)* DBusCondVarWakeAllFunction -->
+    <typedef-decl name='DBusCondVarWakeAllFunction' type-id='type-id-194' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='114' column='1' id='type-id-201'/>
+    <!-- struct DBusThreadFunctions -->
+    <class-decl name='DBusThreadFunctions' size-in-bits='1216' is-struct='yes' naming-typedef-id='type-id-202' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='153' column='1' id='type-id-203'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <!-- unsigned int mask -->
+        <!-- unsigned int DBusThreadFunctions::mask -->
         <var-decl name='mask' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='154' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <!-- DBusMutexNewFunction mutex_new -->
-        <var-decl name='mutex_new' type-id='type-id-186' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='156' column='1'/>
+        <!-- DBusMutexNewFunction DBusThreadFunctions::mutex_new -->
+        <var-decl name='mutex_new' type-id='type-id-182' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='156' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
-        <!-- DBusMutexFreeFunction mutex_free -->
-        <var-decl name='mutex_free' type-id='type-id-187' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='157' column='1'/>
+        <!-- DBusMutexFreeFunction DBusThreadFunctions::mutex_free -->
+        <var-decl name='mutex_free' type-id='type-id-184' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='157' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
-        <!-- DBusMutexLockFunction mutex_lock -->
-        <var-decl name='mutex_lock' type-id='type-id-188' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='158' column='1'/>
+        <!-- DBusMutexLockFunction DBusThreadFunctions::mutex_lock -->
+        <var-decl name='mutex_lock' type-id='type-id-186' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='158' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
-        <!-- DBusMutexUnlockFunction mutex_unlock -->
-        <var-decl name='mutex_unlock' type-id='type-id-189' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='159' column='1'/>
+        <!-- DBusMutexUnlockFunction DBusThreadFunctions::mutex_unlock -->
+        <var-decl name='mutex_unlock' type-id='type-id-187' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='159' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
-        <!-- DBusCondVarNewFunction condvar_new -->
-        <var-decl name='condvar_new' type-id='type-id-190' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='161' column='1'/>
+        <!-- DBusCondVarNewFunction DBusThreadFunctions::condvar_new -->
+        <var-decl name='condvar_new' type-id='type-id-193' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='161' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='384'>
-        <!-- DBusCondVarFreeFunction condvar_free -->
-        <var-decl name='condvar_free' type-id='type-id-191' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='162' column='1'/>
+        <!-- DBusCondVarFreeFunction DBusThreadFunctions::condvar_free -->
+        <var-decl name='condvar_free' type-id='type-id-195' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='162' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='448'>
-        <!-- DBusCondVarWaitFunction condvar_wait -->
-        <var-decl name='condvar_wait' type-id='type-id-192' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='163' column='1'/>
+        <!-- DBusCondVarWaitFunction DBusThreadFunctions::condvar_wait -->
+        <var-decl name='condvar_wait' type-id='type-id-197' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='163' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='512'>
-        <!-- DBusCondVarWaitTimeoutFunction condvar_wait_timeout -->
-        <var-decl name='condvar_wait_timeout' type-id='type-id-193' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='164' column='1'/>
+        <!-- DBusCondVarWaitTimeoutFunction DBusThreadFunctions::condvar_wait_timeout -->
+        <var-decl name='condvar_wait_timeout' type-id='type-id-199' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='164' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='576'>
-        <!-- DBusCondVarWakeOneFunction condvar_wake_one -->
-        <var-decl name='condvar_wake_one' type-id='type-id-194' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='165' column='1'/>
+        <!-- DBusCondVarWakeOneFunction DBusThreadFunctions::condvar_wake_one -->
+        <var-decl name='condvar_wake_one' type-id='type-id-200' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='165' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='640'>
-        <!-- DBusCondVarWakeAllFunction condvar_wake_all -->
-        <var-decl name='condvar_wake_all' type-id='type-id-195' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='166' column='1'/>
+        <!-- DBusCondVarWakeAllFunction DBusThreadFunctions::condvar_wake_all -->
+        <var-decl name='condvar_wake_all' type-id='type-id-201' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='166' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='704'>
-        <!-- DBusRecursiveMutexNewFunction recursive_mutex_new -->
-        <var-decl name='recursive_mutex_new' type-id='type-id-196' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='168' column='1'/>
+        <!-- DBusRecursiveMutexNewFunction DBusThreadFunctions::recursive_mutex_new -->
+        <var-decl name='recursive_mutex_new' type-id='type-id-188' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='168' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='768'>
-        <!-- DBusRecursiveMutexFreeFunction recursive_mutex_free -->
-        <var-decl name='recursive_mutex_free' type-id='type-id-197' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='169' column='1'/>
+        <!-- DBusRecursiveMutexFreeFunction DBusThreadFunctions::recursive_mutex_free -->
+        <var-decl name='recursive_mutex_free' type-id='type-id-189' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='169' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='832'>
-        <!-- DBusRecursiveMutexLockFunction recursive_mutex_lock -->
-        <var-decl name='recursive_mutex_lock' type-id='type-id-198' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='170' column='1'/>
+        <!-- DBusRecursiveMutexLockFunction DBusThreadFunctions::recursive_mutex_lock -->
+        <var-decl name='recursive_mutex_lock' type-id='type-id-190' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='170' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='896'>
-        <!-- DBusRecursiveMutexUnlockFunction recursive_mutex_unlock -->
-        <var-decl name='recursive_mutex_unlock' type-id='type-id-199' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='171' column='1'/>
+        <!-- DBusRecursiveMutexUnlockFunction DBusThreadFunctions::recursive_mutex_unlock -->
+        <var-decl name='recursive_mutex_unlock' type-id='type-id-191' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='171' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='960'>
-        <!-- void ()* padding1 -->
-        <var-decl name='padding1' type-id='type-id-200' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='173' column='1'/>
+        <!-- void ()* DBusThreadFunctions::padding1 -->
+        <var-decl name='padding1' type-id='type-id-204' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='173' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1024'>
-        <!-- void ()* padding2 -->
-        <var-decl name='padding2' type-id='type-id-200' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='174' column='1'/>
+        <!-- void ()* DBusThreadFunctions::padding2 -->
+        <var-decl name='padding2' type-id='type-id-204' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='174' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1088'>
-        <!-- void ()* padding3 -->
-        <var-decl name='padding3' type-id='type-id-200' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='175' column='1'/>
+        <!-- void ()* DBusThreadFunctions::padding3 -->
+        <var-decl name='padding3' type-id='type-id-204' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='175' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1152'>
-        <!-- void ()* padding4 -->
-        <var-decl name='padding4' type-id='type-id-200' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='176' column='1'/>
+        <!-- void ()* DBusThreadFunctions::padding4 -->
+        <var-decl name='padding4' type-id='type-id-204' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='176' column='1'/>
       </data-member>
     </class-decl>
-    <!-- typedef DBusMutex* ()* DBusMutexNewFunction -->
-    <typedef-decl name='DBusMutexNewFunction' type-id='type-id-201' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='46' column='1' id='type-id-186'/>
-    <!-- typedef DBusMutex DBusMutex -->
-    <typedef-decl name='DBusMutex' type-id='type-id-183' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='41' column='1' id='type-id-202'/>
-    <!-- typedef void (DBusMutex*)* DBusMutexFreeFunction -->
-    <typedef-decl name='DBusMutexFreeFunction' type-id='type-id-203' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='48' column='1' id='type-id-187'/>
-    <!-- typedef typedef dbus_bool_t (DBusMutex*)* DBusMutexLockFunction -->
-    <typedef-decl name='DBusMutexLockFunction' type-id='type-id-204' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='50' column='1' id='type-id-188'/>
-    <!-- typedef typedef dbus_bool_t (DBusMutex*)* DBusMutexUnlockFunction -->
-    <typedef-decl name='DBusMutexUnlockFunction' type-id='type-id-204' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='52' column='1' id='type-id-189'/>
-    <!-- typedef DBusCondVar* ()* DBusCondVarNewFunction -->
-    <typedef-decl name='DBusCondVarNewFunction' type-id='type-id-205' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='77' column='1' id='type-id-190'/>
-    <!-- typedef void (DBusCondVar*)* DBusCondVarFreeFunction -->
-    <typedef-decl name='DBusCondVarFreeFunction' type-id='type-id-206' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='80' column='1' id='type-id-191'/>
-    <!-- typedef void (DBusCondVar*, DBusMutex*)* DBusCondVarWaitFunction -->
-    <typedef-decl name='DBusCondVarWaitFunction' type-id='type-id-207' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='92' column='1' id='type-id-192'/>
-    <!-- typedef typedef dbus_bool_t (DBusCondVar*, DBusMutex*, int)* DBusCondVarWaitTimeoutFunction -->
-    <typedef-decl name='DBusCondVarWaitTimeoutFunction' type-id='type-id-208' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='101' column='1' id='type-id-193'/>
-    <!-- typedef void (DBusCondVar*)* DBusCondVarWakeOneFunction -->
-    <typedef-decl name='DBusCondVarWakeOneFunction' type-id='type-id-206' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='108' column='1' id='type-id-194'/>
-    <!-- typedef void (DBusCondVar*)* DBusCondVarWakeAllFunction -->
-    <typedef-decl name='DBusCondVarWakeAllFunction' type-id='type-id-206' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='114' column='1' id='type-id-195'/>
-    <!-- typedef DBusMutex* ()* DBusRecursiveMutexNewFunction -->
-    <typedef-decl name='DBusRecursiveMutexNewFunction' type-id='type-id-201' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='61' column='1' id='type-id-196'/>
-    <!-- typedef void (DBusMutex*)* DBusRecursiveMutexFreeFunction -->
-    <typedef-decl name='DBusRecursiveMutexFreeFunction' type-id='type-id-203' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='64' column='1' id='type-id-197'/>
-    <!-- typedef void (DBusMutex*)* DBusRecursiveMutexLockFunction -->
-    <typedef-decl name='DBusRecursiveMutexLockFunction' type-id='type-id-203' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='68' column='1' id='type-id-198'/>
-    <!-- typedef void (DBusMutex*)* DBusRecursiveMutexUnlockFunction -->
-    <typedef-decl name='DBusRecursiveMutexUnlockFunction' type-id='type-id-203' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='72' column='1' id='type-id-199'/>
+    <!-- typedef DBusThreadFunctions DBusThreadFunctions -->
+    <typedef-decl name='DBusThreadFunctions' type-id='type-id-203' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.h' line='178' column='1' id='type-id-202'/>
     <!-- DBusCondVar* ()* -->
-    <pointer-type-def type-id='type-id-209' size-in-bits='64' id='type-id-205'/>
+    <pointer-type-def type-id='type-id-205' size-in-bits='64' id='type-id-192'/>
     <!-- DBusMutex* -->
-    <pointer-type-def type-id='type-id-202' size-in-bits='64' id='type-id-210'/>
+    <pointer-type-def type-id='type-id-180' size-in-bits='64' id='type-id-206'/>
     <!-- DBusMutex* ()* -->
-    <pointer-type-def type-id='type-id-211' size-in-bits='64' id='type-id-201'/>
+    <pointer-type-def type-id='type-id-207' size-in-bits='64' id='type-id-181'/>
     <!-- const DBusThreadFunctions -->
-    <qualified-type-def type-id='type-id-185' const='yes' id='type-id-212'/>
+    <qualified-type-def type-id='type-id-202' const='yes' id='type-id-208'/>
     <!-- const DBusThreadFunctions* -->
-    <pointer-type-def type-id='type-id-212' size-in-bits='64' id='type-id-213'/>
+    <pointer-type-def type-id='type-id-208' size-in-bits='64' id='type-id-209'/>
     <!-- typedef dbus_bool_t (DBusCondVar*, DBusMutex*, int)* -->
-    <pointer-type-def type-id='type-id-214' size-in-bits='64' id='type-id-208'/>
+    <pointer-type-def type-id='type-id-210' size-in-bits='64' id='type-id-198'/>
     <!-- typedef dbus_bool_t (DBusMutex*)* -->
-    <pointer-type-def type-id='type-id-215' size-in-bits='64' id='type-id-204'/>
+    <pointer-type-def type-id='type-id-211' size-in-bits='64' id='type-id-185'/>
     <!-- void ()* -->
-    <pointer-type-def type-id='type-id-216' size-in-bits='64' id='type-id-200'/>
+    <pointer-type-def type-id='type-id-212' size-in-bits='64' id='type-id-204'/>
     <!-- void (DBusCondVar*)* -->
-    <pointer-type-def type-id='type-id-217' size-in-bits='64' id='type-id-206'/>
+    <pointer-type-def type-id='type-id-213' size-in-bits='64' id='type-id-194'/>
     <!-- void (DBusCondVar*, DBusMutex*)* -->
-    <pointer-type-def type-id='type-id-218' size-in-bits='64' id='type-id-207'/>
+    <pointer-type-def type-id='type-id-214' size-in-bits='64' id='type-id-196'/>
     <!-- void (DBusMutex*)* -->
-    <pointer-type-def type-id='type-id-219' size-in-bits='64' id='type-id-203'/>
+    <pointer-type-def type-id='type-id-215' size-in-bits='64' id='type-id-183'/>
+    <!-- struct DBusMutex -->
+    <class-decl name='DBusMutex' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-179'/>
     <!-- dbus_bool_t dbus_threads_init(const DBusThreadFunctions*) -->
     <function-decl name='dbus_threads_init' mangled-name='dbus_threads_init' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.c' line='391' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_threads_init'>
       <!-- parameter of type 'const DBusThreadFunctions*' -->
-      <parameter type-id='type-id-213' name='functions' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.c' line='391' column='1'/>
+      <parameter type-id='type-id-209' name='functions' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.c' line='391' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-decl>
     <!-- dbus_bool_t dbus_threads_init_default() -->
     <function-decl name='dbus_threads_init_default' mangled-name='dbus_threads_init_default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-threads.c' line='438' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_threads_init_default'>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-decl>
     <!-- DBusCondVar* () -->
-    <function-type size-in-bits='64' id='type-id-209'>
+    <function-type size-in-bits='64' id='type-id-205'>
       <!-- DBusCondVar* -->
-      <return type-id='type-id-29'/>
+      <return type-id='type-id-36'/>
     </function-type>
     <!-- DBusMutex* () -->
-    <function-type size-in-bits='64' id='type-id-211'>
+    <function-type size-in-bits='64' id='type-id-207'>
       <!-- DBusMutex* -->
-      <return type-id='type-id-210'/>
+      <return type-id='type-id-206'/>
     </function-type>
     <!-- dbus_bool_t (DBusCondVar*, DBusMutex*, int) -->
-    <function-type size-in-bits='64' id='type-id-214'>
+    <function-type size-in-bits='64' id='type-id-210'>
       <!-- parameter of type 'DBusCondVar*' -->
-      <parameter type-id='type-id-29'/>
+      <parameter type-id='type-id-36'/>
       <!-- parameter of type 'DBusMutex*' -->
-      <parameter type-id='type-id-210'/>
+      <parameter type-id='type-id-206'/>
       <!-- parameter of type 'int' -->
       <parameter type-id='type-id-2'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-type>
     <!-- dbus_bool_t (DBusMutex*) -->
-    <function-type size-in-bits='64' id='type-id-215'>
+    <function-type size-in-bits='64' id='type-id-211'>
       <!-- parameter of type 'DBusMutex*' -->
-      <parameter type-id='type-id-210'/>
+      <parameter type-id='type-id-206'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-type>
     <!-- void () -->
-    <function-type size-in-bits='64' id='type-id-216'>
+    <function-type size-in-bits='64' id='type-id-212'>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-type>
     <!-- void (DBusCondVar*) -->
-    <function-type size-in-bits='64' id='type-id-217'>
+    <function-type size-in-bits='64' id='type-id-213'>
       <!-- parameter of type 'DBusCondVar*' -->
-      <parameter type-id='type-id-29'/>
+      <parameter type-id='type-id-36'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-type>
     <!-- void (DBusCondVar*, DBusMutex*) -->
-    <function-type size-in-bits='64' id='type-id-218'>
+    <function-type size-in-bits='64' id='type-id-214'>
       <!-- parameter of type 'DBusCondVar*' -->
-      <parameter type-id='type-id-29'/>
+      <parameter type-id='type-id-36'/>
       <!-- parameter of type 'DBusMutex*' -->
-      <parameter type-id='type-id-210'/>
+      <parameter type-id='type-id-206'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-type>
     <!-- void (DBusMutex*) -->
-    <function-type size-in-bits='64' id='type-id-219'>
+    <function-type size-in-bits='64' id='type-id-215'>
       <!-- parameter of type 'DBusMutex*' -->
-      <parameter type-id='type-id-210'/>
+      <parameter type-id='type-id-206'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-type>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-timeout.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
+    <!-- struct DBusTimeout -->
+    <class-decl name='DBusTimeout' size-in-bits='448' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='41' column='1' id='type-id-77'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- int DBusTimeout::refcount -->
+        <var-decl name='refcount' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='42' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <!-- int DBusTimeout::interval -->
+        <var-decl name='interval' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='43' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- DBusTimeoutHandler DBusTimeout::handler -->
+        <var-decl name='handler' type-id='type-id-140' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='45' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- void* DBusTimeout::handler_data -->
+        <var-decl name='handler_data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='46' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- DBusFreeFunction DBusTimeout::free_handler_data_function -->
+        <var-decl name='free_handler_data_function' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='47' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- void* DBusTimeout::data -->
+        <var-decl name='data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='49' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- DBusFreeFunction DBusTimeout::free_data_function -->
+        <var-decl name='free_data_function' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='50' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- unsigned int DBusTimeout::enabled -->
+        <var-decl name='enabled' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='51' column='1'/>
+      </data-member>
+    </class-decl>
     <!-- typedef typedef dbus_bool_t (void*)* DBusTimeoutHandler -->
-    <typedef-decl name='DBusTimeoutHandler' type-id='type-id-143' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.h' line='41' column='1' id='type-id-92'/>
+    <typedef-decl name='DBusTimeoutHandler' type-id='type-id-216' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.h' line='41' column='1' id='type-id-140'/>
     <!-- typedef dbus_bool_t (void*)* -->
-    <pointer-type-def type-id='type-id-146' size-in-bits='64' id='type-id-143'/>
+    <pointer-type-def type-id='type-id-217' size-in-bits='64' id='type-id-216'/>
     <!-- int dbus_timeout_get_interval(DBusTimeout*) -->
     <function-decl name='dbus_timeout_get_interval' mangled-name='dbus_timeout_get_interval' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='416' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_timeout_get_interval'>
       <!-- parameter of type 'DBusTimeout*' -->
-      <parameter type-id='type-id-90' name='timeout' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='416' column='1'/>
+      <parameter type-id='type-id-120' name='timeout' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='416' column='1'/>
       <!-- int -->
       <return type-id='type-id-2'/>
     </function-decl>
     <!-- void* dbus_timeout_get_data(DBusTimeout*) -->
     <function-decl name='dbus_timeout_get_data' mangled-name='dbus_timeout_get_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='429' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_timeout_get_data'>
       <!-- parameter of type 'DBusTimeout*' -->
-      <parameter type-id='type-id-90' name='timeout' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='429' column='1'/>
+      <parameter type-id='type-id-120' name='timeout' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='429' column='1'/>
       <!-- void* -->
-      <return type-id='type-id-10'/>
+      <return type-id='type-id-8'/>
     </function-decl>
     <!-- void dbus_timeout_set_data(DBusTimeout*, void*, DBusFreeFunction) -->
     <function-decl name='dbus_timeout_set_data' mangled-name='dbus_timeout_set_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='446' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_timeout_set_data'>
       <!-- parameter of type 'DBusTimeout*' -->
-      <parameter type-id='type-id-90' name='timeout' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='446' column='1'/>
+      <parameter type-id='type-id-120' name='timeout' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='446' column='1'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='447' column='1'/>
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='447' column='1'/>
       <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='448' column='1'/>
+      <parameter type-id='type-id-45' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='448' column='1'/>
       <!-- void -->
-      <return type-id='type-id-4'/>
+      <return type-id='type-id-24'/>
     </function-decl>
     <!-- dbus_bool_t dbus_timeout_handle(DBusTimeout*) -->
     <function-decl name='dbus_timeout_handle' mangled-name='dbus_timeout_handle' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='472' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_timeout_handle'>
       <!-- parameter of type 'DBusTimeout*' -->
-      <parameter type-id='type-id-90' name='timeout' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='472' column='1'/>
+      <parameter type-id='type-id-120' name='timeout' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='472' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-decl>
     <!-- dbus_bool_t dbus_timeout_get_enabled(DBusTimeout*) -->
     <function-decl name='dbus_timeout_get_enabled' mangled-name='dbus_timeout_get_enabled' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='486' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_timeout_get_enabled'>
       <!-- parameter of type 'DBusTimeout*' -->
-      <parameter type-id='type-id-90' name='timeout' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='486' column='1'/>
+      <parameter type-id='type-id-120' name='timeout' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-timeout.c' line='486' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-decl>
     <!-- dbus_bool_t (void*) -->
-    <function-type size-in-bits='64' id='type-id-146'>
+    <function-type size-in-bits='64' id='type-id-217'>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-type>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-uuidgen.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
-    <!-- dbus_bool_t dbus_internal_do_not_use_create_uuid(char**) -->
-    <function-decl name='dbus_internal_do_not_use_create_uuid' mangled-name='dbus_internal_do_not_use_create_uuid' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='122' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_internal_do_not_use_create_uuid'>
-      <!-- parameter of type 'char**' -->
-      <parameter type-id='type-id-127' name='uuid_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='122' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
     <!-- dbus_bool_t dbus_internal_do_not_use_get_uuid(const char*, char**, dbus_bool_t, DBusError*) -->
     <function-decl name='dbus_internal_do_not_use_get_uuid' mangled-name='dbus_internal_do_not_use_get_uuid' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='83' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_internal_do_not_use_get_uuid'>
       <!-- parameter of type 'const char*' -->
-      <parameter type-id='type-id-15' name='filename' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='83' column='1'/>
+      <parameter type-id='type-id-7' name='filename' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='83' column='1'/>
       <!-- parameter of type 'char**' -->
-      <parameter type-id='type-id-127' name='uuid_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='84' column='1'/>
+      <parameter type-id='type-id-122' name='uuid_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='84' column='1'/>
       <!-- parameter of type 'typedef dbus_bool_t' -->
-      <parameter type-id='type-id-17' name='create_if_not_found' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='85' column='1'/>
+      <parameter type-id='type-id-13' name='create_if_not_found' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='85' column='1'/>
       <!-- parameter of type 'DBusError*' -->
-      <parameter type-id='type-id-21' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='86' column='1'/>
+      <parameter type-id='type-id-20' name='error' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='86' column='1'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_internal_do_not_use_create_uuid(char**) -->
+    <function-decl name='dbus_internal_do_not_use_create_uuid' mangled-name='dbus_internal_do_not_use_create_uuid' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='122' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_internal_do_not_use_create_uuid'>
+      <!-- parameter of type 'char**' -->
+      <parameter type-id='type-id-122' name='uuid_p' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-uuidgen.c' line='122' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
     </function-decl>
   </abi-instr>
   <abi-instr address-size='64' path='dbus-watch.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus' language='LANG_C89'>
+    <!-- struct DBusWatch -->
+    <class-decl name='DBusWatch' size-in-bits='512' is-struct='yes' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='41' column='1' id='type-id-75'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- int DBusWatch::refcount -->
+        <var-decl name='refcount' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='42' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <!-- int DBusWatch::fd -->
+        <var-decl name='fd' type-id='type-id-2' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='43' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- unsigned int DBusWatch::flags -->
+        <var-decl name='flags' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='44' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- DBusWatchHandler DBusWatch::handler -->
+        <var-decl name='handler' type-id='type-id-141' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='46' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- void* DBusWatch::handler_data -->
+        <var-decl name='handler_data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='47' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- DBusFreeFunction DBusWatch::free_handler_data_function -->
+        <var-decl name='free_handler_data_function' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='48' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- void* DBusWatch::data -->
+        <var-decl name='data' type-id='type-id-8' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='50' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- DBusFreeFunction DBusWatch::free_data_function -->
+        <var-decl name='free_data_function' type-id='type-id-45' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='51' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <!-- unsigned int DBusWatch::enabled -->
+        <var-decl name='enabled' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='52' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='449'>
+        <!-- unsigned int DBusWatch::oom_last_time -->
+        <var-decl name='oom_last_time' type-id='type-id-3' visibility='default' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='53' column='1'/>
+      </data-member>
+    </class-decl>
     <!-- typedef typedef dbus_bool_t (DBusWatch*, unsigned int, void*)* DBusWatchHandler -->
-    <typedef-decl name='DBusWatchHandler' type-id='type-id-144' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.h' line='43' column='1' id='type-id-94'/>
+    <typedef-decl name='DBusWatchHandler' type-id='type-id-218' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.h' line='43' column='1' id='type-id-141'/>
     <!-- typedef dbus_bool_t (DBusWatch*, unsigned int, void*)* -->
-    <pointer-type-def type-id='type-id-145' size-in-bits='64' id='type-id-144'/>
-    <!-- dbus_bool_t dbus_watch_handle(DBusWatch*, unsigned int) -->
-    <function-decl name='dbus_watch_handle' mangled-name='dbus_watch_handle' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='698' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_handle'>
+    <pointer-type-def type-id='type-id-219' size-in-bits='64' id='type-id-218'/>
+    <!-- int dbus_watch_get_fd(DBusWatch*) -->
+    <function-decl name='dbus_watch_get_fd' mangled-name='dbus_watch_get_fd' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='536' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_get_fd'>
       <!-- parameter of type 'DBusWatch*' -->
-      <parameter type-id='type-id-126' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='698' column='1'/>
-      <!-- parameter of type 'unsigned int' -->
-      <parameter type-id='type-id-3' name='flags' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='699' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- dbus_bool_t dbus_watch_get_enabled(DBusWatch*) -->
-    <function-decl name='dbus_watch_get_enabled' mangled-name='dbus_watch_get_enabled' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='667' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_get_enabled'>
-      <!-- parameter of type 'DBusWatch*' -->
-      <parameter type-id='type-id-126' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='667' column='1'/>
-      <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
-    </function-decl>
-    <!-- void dbus_watch_set_data(DBusWatch*, void*, DBusFreeFunction) -->
-    <function-decl name='dbus_watch_set_data' mangled-name='dbus_watch_set_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='642' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_set_data'>
-      <!-- parameter of type 'DBusWatch*' -->
-      <parameter type-id='type-id-126' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='642' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='643' column='1'/>
-      <!-- parameter of type 'typedef DBusFreeFunction' -->
-      <parameter type-id='type-id-38' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='644' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-4'/>
-    </function-decl>
-    <!-- void* dbus_watch_get_data(DBusWatch*) -->
-    <function-decl name='dbus_watch_get_data' mangled-name='dbus_watch_get_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='623' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_get_data'>
-      <!-- parameter of type 'DBusWatch*' -->
-      <parameter type-id='type-id-126' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='623' column='1'/>
-      <!-- void* -->
-      <return type-id='type-id-10'/>
-    </function-decl>
-    <!-- unsigned int dbus_watch_get_flags(DBusWatch*) -->
-    <function-decl name='dbus_watch_get_flags' mangled-name='dbus_watch_get_flags' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='607' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_get_flags'>
-      <!-- parameter of type 'DBusWatch*' -->
-      <parameter type-id='type-id-126' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='607' column='1'/>
-      <!-- unsigned int -->
-      <return type-id='type-id-3'/>
-    </function-decl>
-    <!-- int dbus_watch_get_socket(DBusWatch*) -->
-    <function-decl name='dbus_watch_get_socket' mangled-name='dbus_watch_get_socket' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='586' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_get_socket'>
-      <!-- parameter of type 'DBusWatch*' -->
-      <parameter type-id='type-id-126' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='586' column='1'/>
+      <parameter type-id='type-id-121' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='536' column='1'/>
       <!-- int -->
       <return type-id='type-id-2'/>
     </function-decl>
     <!-- int dbus_watch_get_unix_fd(DBusWatch*) -->
     <function-decl name='dbus_watch_get_unix_fd' mangled-name='dbus_watch_get_unix_fd' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='557' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_get_unix_fd'>
       <!-- parameter of type 'DBusWatch*' -->
-      <parameter type-id='type-id-126' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='557' column='1'/>
+      <parameter type-id='type-id-121' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='557' column='1'/>
       <!-- int -->
       <return type-id='type-id-2'/>
     </function-decl>
-    <!-- int dbus_watch_get_fd(DBusWatch*) -->
-    <function-decl name='dbus_watch_get_fd' mangled-name='dbus_watch_get_fd' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='536' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_get_fd'>
+    <!-- int dbus_watch_get_socket(DBusWatch*) -->
+    <function-decl name='dbus_watch_get_socket' mangled-name='dbus_watch_get_socket' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='586' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_get_socket'>
       <!-- parameter of type 'DBusWatch*' -->
-      <parameter type-id='type-id-126' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='536' column='1'/>
+      <parameter type-id='type-id-121' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='586' column='1'/>
       <!-- int -->
       <return type-id='type-id-2'/>
     </function-decl>
+    <!-- unsigned int dbus_watch_get_flags(DBusWatch*) -->
+    <function-decl name='dbus_watch_get_flags' mangled-name='dbus_watch_get_flags' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='607' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_get_flags'>
+      <!-- parameter of type 'DBusWatch*' -->
+      <parameter type-id='type-id-121' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='607' column='1'/>
+      <!-- unsigned int -->
+      <return type-id='type-id-3'/>
+    </function-decl>
+    <!-- void* dbus_watch_get_data(DBusWatch*) -->
+    <function-decl name='dbus_watch_get_data' mangled-name='dbus_watch_get_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='623' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_get_data'>
+      <!-- parameter of type 'DBusWatch*' -->
+      <parameter type-id='type-id-121' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='623' column='1'/>
+      <!-- void* -->
+      <return type-id='type-id-8'/>
+    </function-decl>
+    <!-- void dbus_watch_set_data(DBusWatch*, void*, DBusFreeFunction) -->
+    <function-decl name='dbus_watch_set_data' mangled-name='dbus_watch_set_data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='642' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_set_data'>
+      <!-- parameter of type 'DBusWatch*' -->
+      <parameter type-id='type-id-121' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='642' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-8' name='data' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='643' column='1'/>
+      <!-- parameter of type 'typedef DBusFreeFunction' -->
+      <parameter type-id='type-id-45' name='free_data_function' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='644' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-24'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_watch_get_enabled(DBusWatch*) -->
+    <function-decl name='dbus_watch_get_enabled' mangled-name='dbus_watch_get_enabled' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='667' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_get_enabled'>
+      <!-- parameter of type 'DBusWatch*' -->
+      <parameter type-id='type-id-121' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='667' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
+    <!-- dbus_bool_t dbus_watch_handle(DBusWatch*, unsigned int) -->
+    <function-decl name='dbus_watch_handle' mangled-name='dbus_watch_handle' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='698' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dbus_watch_handle'>
+      <!-- parameter of type 'DBusWatch*' -->
+      <parameter type-id='type-id-121' name='watch' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='698' column='1'/>
+      <!-- parameter of type 'unsigned int' -->
+      <parameter type-id='type-id-3' name='flags' filepath='/tmp/legendre/spack-stage/spack-stage-hI99PR/dbus-1.9.0/dbus/dbus-watch.c' line='699' column='1'/>
+      <!-- typedef dbus_bool_t -->
+      <return type-id='type-id-13'/>
+    </function-decl>
     <!-- dbus_bool_t (DBusWatch*, unsigned int, void*) -->
-    <function-type size-in-bits='64' id='type-id-145'>
+    <function-type size-in-bits='64' id='type-id-219'>
       <!-- parameter of type 'DBusWatch*' -->
-      <parameter type-id='type-id-126'/>
+      <parameter type-id='type-id-121'/>
       <!-- parameter of type 'unsigned int' -->
       <parameter type-id='type-id-3'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-10'/>
+      <parameter type-id='type-id-8'/>
       <!-- typedef dbus_bool_t -->
-      <return type-id='type-id-17'/>
+      <return type-id='type-id-13'/>
     </function-type>
   </abi-instr>
 </abi-corpus>
diff --git a/tests/data/test-annotate/test14-pr18893.so.abi b/tests/data/test-annotate/test14-pr18893.so.abi
index d795ee8..2bcb3c5 100644
--- a/tests/data/test-annotate/test14-pr18893.so.abi
+++ b/tests/data/test-annotate/test14-pr18893.so.abi
@@ -1,4 +1,4 @@
-<abi-corpus version='2.0' architecture='elf-amd-x86_64' soname='libGLU.so.1'>
+<abi-corpus version='2.1' architecture='elf-amd-x86_64' soname='libGLU.so.1'>
   <elf-needed>
     <dependency name='libGL.so.1'/>
     <dependency name='libstdc++.so.6'/>
@@ -137,560 +137,15 @@
       <!-- <anonymous range>[40] -->
       <subrange length='40' type-id='type-id-3' id='type-id-6'/>
     </array-type-def>
-    <!-- class CachingEvaluator -->
-    <class-decl name='CachingEvaluator' size-in-bits='64' visibility='default' filepath='libnurbs/internals/cachingeval.h' line='39' column='1' id='type-id-7'>
-      <member-type access='private'>
-        <!-- enum CachingEvaluator::ServiceMode -->
-        <enum-decl name='ServiceMode' filepath='libnurbs/internals/cachingeval.h' line='42' column='1' id='type-id-8'>
-          <underlying-type type-id='type-id-9'/>
-          <enumerator name='play' value='0'/>
-          <enumerator name='record' value='1'/>
-          <enumerator name='playAndRecord' value='2'/>
-        </enum-decl>
-      </member-type>
-      <member-function access='private' destructor='yes' vtable-offset='-1'>
-        <!-- CachingEvaluator::~CachingEvaluator(int) -->
-        <function-decl name='~CachingEvaluator' filepath='libnurbs/internals/cachingeval.h' line='41' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'CachingEvaluator*' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='2'>
-        <!-- int CachingEvaluator::canRecord() -->
-        <function-decl name='canRecord' mangled-name='_ZN16CachingEvaluator9canRecordEv' filepath='libnurbs/internals/cachingeval.cc' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'CachingEvaluator*' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- int -->
-          <return type-id='type-id-11'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='3'>
-        <!-- int CachingEvaluator::canPlayAndRecord() -->
-        <function-decl name='canPlayAndRecord' mangled-name='_ZN16CachingEvaluator16canPlayAndRecordEv' filepath='libnurbs/internals/cachingeval.cc' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'CachingEvaluator*' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- int -->
-          <return type-id='type-id-11'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='4'>
-        <!-- int CachingEvaluator::createHandle(int) -->
-        <function-decl name='createHandle' mangled-name='_ZN16CachingEvaluator12createHandleEi' filepath='libnurbs/internals/cachingeval.cc' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'CachingEvaluator*' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- int -->
-          <return type-id='type-id-11'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='5'>
-        <!-- void CachingEvaluator::beginOutput(CachingEvaluator::ServiceMode, int) -->
-        <function-decl name='beginOutput' mangled-name='_ZN16CachingEvaluator11beginOutputENS_11ServiceModeEi' filepath='libnurbs/internals/cachingeval.cc' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'CachingEvaluator*' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- parameter of type 'enum CachingEvaluator::ServiceMode' -->
-          <parameter type-id='type-id-8'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='6'>
-        <!-- void CachingEvaluator::endOutput() -->
-        <function-decl name='endOutput' mangled-name='_ZN16CachingEvaluator9endOutputEv' filepath='libnurbs/internals/cachingeval.cc' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'CachingEvaluator*' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='7'>
-        <!-- void CachingEvaluator::discardRecording(int) -->
-        <function-decl name='discardRecording' mangled-name='_ZN16CachingEvaluator16discardRecordingEi' filepath='libnurbs/internals/cachingeval.cc' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'CachingEvaluator*' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='8'>
-        <!-- void CachingEvaluator::playRecording(int) -->
-        <function-decl name='playRecording' mangled-name='_ZN16CachingEvaluator13playRecordingEi' filepath='libnurbs/internals/cachingeval.cc' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'CachingEvaluator*' -->
-          <parameter type-id='type-id-10' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct BasicCurveEvaluator -->
-    <class-decl name='BasicCurveEvaluator' size-in-bits='64' is-struct='yes' visibility='default' filepath='libnurbs/internals/basiccrveval.h' line='43' column='1' id='type-id-13'>
-      <!-- class CachingEvaluator -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-7'/>
-      <member-function access='public' destructor='yes' vtable-offset='-1'>
-        <!-- BasicCurveEvaluator::~BasicCurveEvaluator(int) -->
-        <function-decl name='~BasicCurveEvaluator' filepath='libnurbs/internals/basiccrveval.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='9'>
-        <!-- void BasicCurveEvaluator::domain1f(REAL, REAL) -->
-        <function-decl name='domain1f' mangled-name='_ZN19BasicCurveEvaluator8domain1fEff' filepath='libnurbs/internals/basiccrveval.cc' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='10'>
-        <!-- void BasicCurveEvaluator::range1f(long int, REAL*, REAL*) -->
-        <function-decl name='range1f' mangled-name='_ZN19BasicCurveEvaluator7range1fElPfS0_' filepath='libnurbs/internals/basiccrveval.cc' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='11'>
-        <!-- void BasicCurveEvaluator::enable(long int) -->
-        <function-decl name='enable' mangled-name='_ZN19BasicCurveEvaluator6enableEl' filepath='libnurbs/internals/basiccrveval.cc' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='12'>
-        <!-- void BasicCurveEvaluator::disable(long int) -->
-        <function-decl name='disable' mangled-name='_ZN19BasicCurveEvaluator7disableEl' filepath='libnurbs/internals/basiccrveval.cc' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='13'>
-        <!-- void BasicCurveEvaluator::bgnmap1f(long int) -->
-        <function-decl name='bgnmap1f' mangled-name='_ZN19BasicCurveEvaluator8bgnmap1fEl' filepath='libnurbs/internals/basiccrveval.cc' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='14'>
-        <!-- void BasicCurveEvaluator::map1f(long int, REAL, REAL, long int, long int, REAL*) -->
-        <function-decl name='map1f' mangled-name='_ZN19BasicCurveEvaluator5map1fElffllPf' filepath='libnurbs/internals/basiccrveval.cc' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='15'>
-        <!-- void BasicCurveEvaluator::mapgrid1f(long int, REAL, REAL) -->
-        <function-decl name='mapgrid1f' mangled-name='_ZN19BasicCurveEvaluator9mapgrid1fElff' filepath='libnurbs/internals/basiccrveval.cc' line='93' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='16'>
-        <!-- void BasicCurveEvaluator::mapmesh1f(long int, long int, long int) -->
-        <function-decl name='mapmesh1f' mangled-name='_ZN19BasicCurveEvaluator9mapmesh1fElll' filepath='libnurbs/internals/basiccrveval.cc' line='101' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='17'>
-        <!-- void BasicCurveEvaluator::evalcoord1f(long int, REAL) -->
-        <function-decl name='evalcoord1f' mangled-name='_ZN19BasicCurveEvaluator11evalcoord1fElf' filepath='libnurbs/internals/basiccrveval.cc' line='109' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='18'>
-        <!-- void BasicCurveEvaluator::endmap1f() -->
-        <function-decl name='endmap1f' mangled-name='_ZN19BasicCurveEvaluator8endmap1fEv' filepath='libnurbs/internals/basiccrveval.cc' line='117' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='19'>
-        <!-- void BasicCurveEvaluator::bgnline() -->
-        <function-decl name='bgnline' mangled-name='_ZN19BasicCurveEvaluator7bgnlineEv' filepath='libnurbs/internals/basiccrveval.cc' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='20'>
-        <!-- void BasicCurveEvaluator::endline() -->
-        <function-decl name='endline' mangled-name='_ZN19BasicCurveEvaluator7endlineEv' filepath='libnurbs/internals/basiccrveval.cc' line='133' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
-          <parameter type-id='type-id-14' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class OpenGLCurveEvaluator -->
-    <class-decl name='OpenGLCurveEvaluator' size-in-bits='27584' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='66' column='1' id='type-id-17'>
-      <!-- struct BasicCurveEvaluator -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-13'/>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- curveEvalMachine OpenGLCurveEvaluator::em_vertex -->
-        <var-decl name='em_vertex' type-id='type-id-18' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='102' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='6656'>
-        <!-- curveEvalMachine OpenGLCurveEvaluator::em_normal -->
-        <var-decl name='em_normal' type-id='type-id-18' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='103' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='13248'>
-        <!-- curveEvalMachine OpenGLCurveEvaluator::em_color -->
-        <var-decl name='em_color' type-id='type-id-18' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='104' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='19840'>
-        <!-- curveEvalMachine OpenGLCurveEvaluator::em_texcoord -->
-        <var-decl name='em_texcoord' type-id='type-id-18' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='105' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26432'>
-        <!-- int OpenGLCurveEvaluator::vertex_flag -->
-        <var-decl name='vertex_flag' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='106' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26464'>
-        <!-- int OpenGLCurveEvaluator::normal_flag -->
-        <var-decl name='normal_flag' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='107' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26496'>
-        <!-- int OpenGLCurveEvaluator::color_flag -->
-        <var-decl name='color_flag' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='108' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26528'>
-        <!-- int OpenGLCurveEvaluator::texcoord_flag -->
-        <var-decl name='texcoord_flag' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='109' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26560'>
-        <!-- REAL OpenGLCurveEvaluator::global_grid_u0 -->
-        <var-decl name='global_grid_u0' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='111' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26592'>
-        <!-- REAL OpenGLCurveEvaluator::global_grid_u1 -->
-        <var-decl name='global_grid_u1' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='112' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26624'>
-        <!-- int OpenGLCurveEvaluator::global_grid_nu -->
-        <var-decl name='global_grid_nu' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='113' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26688'>
-        <!-- void (typedef GLenum)* OpenGLCurveEvaluator::beginCallBackN -->
-        <var-decl name='beginCallBackN' type-id='type-id-19' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='128' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26752'>
-        <!-- void ()* OpenGLCurveEvaluator::endCallBackN -->
-        <var-decl name='endCallBackN' type-id='type-id-20' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='129' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26816'>
-        <!-- void (const GLfloat*)* OpenGLCurveEvaluator::vertexCallBackN -->
-        <var-decl name='vertexCallBackN' type-id='type-id-21' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='130' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26880'>
-        <!-- void (const GLfloat*)* OpenGLCurveEvaluator::normalCallBackN -->
-        <var-decl name='normalCallBackN' type-id='type-id-21' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='131' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26944'>
-        <!-- void (const GLfloat*)* OpenGLCurveEvaluator::colorCallBackN -->
-        <var-decl name='colorCallBackN' type-id='type-id-21' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='132' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='27008'>
-        <!-- void (const GLfloat*)* OpenGLCurveEvaluator::texcoordCallBackN -->
-        <var-decl name='texcoordCallBackN' type-id='type-id-21' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='133' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='27072'>
-        <!-- void (typedef GLenum, void*)* OpenGLCurveEvaluator::beginCallBackData -->
-        <var-decl name='beginCallBackData' type-id='type-id-22' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='135' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='27136'>
-        <!-- void (void*)* OpenGLCurveEvaluator::endCallBackData -->
-        <var-decl name='endCallBackData' type-id='type-id-23' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='136' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='27200'>
-        <!-- void (const GLfloat*, void*)* OpenGLCurveEvaluator::vertexCallBackData -->
-        <var-decl name='vertexCallBackData' type-id='type-id-24' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='137' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='27264'>
-        <!-- void (const GLfloat*, void*)* OpenGLCurveEvaluator::normalCallBackData -->
-        <var-decl name='normalCallBackData' type-id='type-id-24' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='138' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='27328'>
-        <!-- void (const GLfloat*, void*)* OpenGLCurveEvaluator::colorCallBackData -->
-        <var-decl name='colorCallBackData' type-id='type-id-24' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='139' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='27392'>
-        <!-- void (const GLfloat*, void*)* OpenGLCurveEvaluator::texcoordCallBackData -->
-        <var-decl name='texcoordCallBackData' type-id='type-id-24' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='140' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='27456'>
-        <!-- void* OpenGLCurveEvaluator::userData -->
-        <var-decl name='userData' type-id='type-id-25' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='142' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='27520'>
-        <!-- int OpenGLCurveEvaluator::output_triangles -->
-        <var-decl name='output_triangles' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='154' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- OpenGLCurveEvaluator::OpenGLCurveEvaluator() -->
-        <function-decl name='OpenGLCurveEvaluator' filepath='libnurbs/interface/glcurveval.cc' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes' vtable-offset='-1'>
-        <!-- OpenGLCurveEvaluator::~OpenGLCurveEvaluator(int) -->
-        <function-decl name='~OpenGLCurveEvaluator' filepath='libnurbs/interface/glcurveval.cc' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='9'>
-        <!-- void OpenGLCurveEvaluator::domain1f(REAL, REAL) -->
-        <function-decl name='domain1f' mangled-name='_ZN20OpenGLCurveEvaluator8domain1fEff' filepath='libnurbs/interface/glcurveval.cc' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='10'>
-        <!-- void OpenGLCurveEvaluator::range1f(long int, REAL*, REAL*) -->
-        <function-decl name='range1f' mangled-name='_ZN20OpenGLCurveEvaluator7range1fElPfS0_' filepath='libnurbs/interface/glcurveval.cc' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='11'>
-        <!-- void OpenGLCurveEvaluator::enable(long int) -->
-        <function-decl name='enable' mangled-name='_ZN20OpenGLCurveEvaluator6enableEl' filepath='libnurbs/interface/glcurveval.cc' line='137' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='12'>
-        <!-- void OpenGLCurveEvaluator::disable(long int) -->
-        <function-decl name='disable' mangled-name='_ZN20OpenGLCurveEvaluator7disableEl' filepath='libnurbs/interface/glcurveval.cc' line='127' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='13'>
-        <!-- void OpenGLCurveEvaluator::bgnmap1f(long int) -->
-        <function-decl name='bgnmap1f' mangled-name='_ZN20OpenGLCurveEvaluator8bgnmap1fEl' filepath='libnurbs/interface/glcurveval.cc' line='164' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='14'>
-        <!-- void OpenGLCurveEvaluator::map1f(long int, REAL, REAL, long int, long int, REAL*) -->
-        <function-decl name='map1f' mangled-name='_ZN20OpenGLCurveEvaluator5map1fElffllPf' filepath='libnurbs/interface/glcurveval.cc' line='199' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='15'>
-        <!-- void OpenGLCurveEvaluator::mapgrid1f(long int, REAL, REAL) -->
-        <function-decl name='mapgrid1f' mangled-name='_ZN20OpenGLCurveEvaluator9mapgrid1fElff' filepath='libnurbs/interface/glcurveval.cc' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='16'>
-        <!-- void OpenGLCurveEvaluator::mapmesh1f(long int, long int, long int) -->
-        <function-decl name='mapmesh1f' mangled-name='_ZN20OpenGLCurveEvaluator9mapmesh1fElll' filepath='libnurbs/interface/glcurveval.cc' line='262' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='17'>
-        <!-- void OpenGLCurveEvaluator::evalcoord1f(long int, REAL) -->
-        <function-decl name='evalcoord1f' mangled-name='_ZN20OpenGLCurveEvaluator11evalcoord1fElf' filepath='libnurbs/interface/glcurveval.cc' line='296' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='18'>
-        <!-- void OpenGLCurveEvaluator::endmap1f() -->
-        <function-decl name='endmap1f' mangled-name='_ZN20OpenGLCurveEvaluator8endmap1fEv' filepath='libnurbs/interface/glcurveval.cc' line='184' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='19'>
-        <!-- void OpenGLCurveEvaluator::bgnline() -->
-        <function-decl name='bgnline' mangled-name='_ZN20OpenGLCurveEvaluator7bgnlineEv' filepath='libnurbs/interface/glcurveval.cc' line='105' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='20'>
-        <!-- void OpenGLCurveEvaluator::endline() -->
-        <function-decl name='endline' mangled-name='_ZN20OpenGLCurveEvaluator7endlineEv' filepath='libnurbs/interface/glcurveval.cc' line='114' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
-          <parameter type-id='type-id-26' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- typedef curveEvalMachine curveEvalMachine -->
-    <typedef-decl name='curveEvalMachine' type-id='type-id-27' filepath='libnurbs/interface/glcurveval.h' line='64' column='1' id='type-id-18'/>
-    <!-- typedef float REAL -->
-    <typedef-decl name='REAL' type-id='type-id-28' filepath='libnurbs/internals/types.h' line='41' column='1' id='type-id-1'/>
     <!-- struct curveEvalMachine -->
-    <class-decl name='curveEvalMachine' size-in-bits='6592' is-struct='yes' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='55' column='1' id='type-id-27'>
+    <class-decl name='curveEvalMachine' size-in-bits='6592' is-struct='yes' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='55' column='1' id='type-id-7'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- REAL curveEvalMachine::uprime -->
         <var-decl name='uprime' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='56' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
         <!-- int curveEvalMachine::k -->
-        <var-decl name='k' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='57' column='1'/>
+        <var-decl name='k' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='57' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- REAL curveEvalMachine::u1 -->
@@ -702,11 +157,11 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- int curveEvalMachine::ustride -->
-        <var-decl name='ustride' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='60' column='1'/>
+        <var-decl name='ustride' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='60' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='160'>
         <!-- int curveEvalMachine::uorder -->
-        <var-decl name='uorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='61' column='1'/>
+        <var-decl name='uorder' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='61' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- REAL curveEvalMachine::ctlpoints[160] -->
@@ -717,228 +172,1322 @@
         <var-decl name='ucoeff' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='63' column='1'/>
       </data-member>
     </class-decl>
+    <!-- typedef curveEvalMachine curveEvalMachine -->
+    <typedef-decl name='curveEvalMachine' type-id='type-id-7' filepath='libnurbs/interface/glcurveval.h' line='64' column='1' id='type-id-9'/>
+    <!-- class CachingEvaluator -->
+    <class-decl name='CachingEvaluator' size-in-bits='64' visibility='default' filepath='libnurbs/internals/cachingeval.h' line='39' column='1' id='type-id-10'>
+      <member-type access='private'>
+        <!-- enum CachingEvaluator::ServiceMode -->
+        <enum-decl name='ServiceMode' filepath='libnurbs/internals/cachingeval.h' line='42' column='1' id='type-id-11'>
+          <underlying-type type-id='type-id-12'/>
+          <enumerator name='play' value='0'/>
+          <enumerator name='record' value='1'/>
+          <enumerator name='playAndRecord' value='2'/>
+        </enum-decl>
+      </member-type>
+      <member-function access='private' destructor='yes' vtable-offset='-1'>
+        <!-- CachingEvaluator::~CachingEvaluator(int) -->
+        <function-decl name='~CachingEvaluator' filepath='libnurbs/internals/cachingeval.h' line='41' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CachingEvaluator*' -->
+          <parameter type-id='type-id-13' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='2'>
+        <!-- int CachingEvaluator::canRecord() -->
+        <function-decl name='canRecord' mangled-name='_ZN16CachingEvaluator9canRecordEv' filepath='libnurbs/internals/cachingeval.cc' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CachingEvaluator*' -->
+          <parameter type-id='type-id-13' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='3'>
+        <!-- int CachingEvaluator::canPlayAndRecord() -->
+        <function-decl name='canPlayAndRecord' mangled-name='_ZN16CachingEvaluator16canPlayAndRecordEv' filepath='libnurbs/internals/cachingeval.cc' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CachingEvaluator*' -->
+          <parameter type-id='type-id-13' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='4'>
+        <!-- int CachingEvaluator::createHandle(int) -->
+        <function-decl name='createHandle' mangled-name='_ZN16CachingEvaluator12createHandleEi' filepath='libnurbs/internals/cachingeval.cc' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CachingEvaluator*' -->
+          <parameter type-id='type-id-13' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='5'>
+        <!-- void CachingEvaluator::beginOutput(CachingEvaluator::ServiceMode, int) -->
+        <function-decl name='beginOutput' mangled-name='_ZN16CachingEvaluator11beginOutputENS_11ServiceModeEi' filepath='libnurbs/internals/cachingeval.cc' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CachingEvaluator*' -->
+          <parameter type-id='type-id-13' is-artificial='yes'/>
+          <!-- parameter of type 'enum CachingEvaluator::ServiceMode' -->
+          <parameter type-id='type-id-11'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='6'>
+        <!-- void CachingEvaluator::endOutput() -->
+        <function-decl name='endOutput' mangled-name='_ZN16CachingEvaluator9endOutputEv' filepath='libnurbs/internals/cachingeval.cc' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CachingEvaluator*' -->
+          <parameter type-id='type-id-13' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='7'>
+        <!-- void CachingEvaluator::discardRecording(int) -->
+        <function-decl name='discardRecording' mangled-name='_ZN16CachingEvaluator16discardRecordingEi' filepath='libnurbs/internals/cachingeval.cc' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CachingEvaluator*' -->
+          <parameter type-id='type-id-13' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='8'>
+        <!-- void CachingEvaluator::playRecording(int) -->
+        <function-decl name='playRecording' mangled-name='_ZN16CachingEvaluator13playRecordingEi' filepath='libnurbs/internals/cachingeval.cc' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CachingEvaluator*' -->
+          <parameter type-id='type-id-13' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- typedef float REAL -->
+    <typedef-decl name='REAL' type-id='type-id-15' filepath='libnurbs/internals/types.h' line='41' column='1' id='type-id-1'/>
     <!-- BasicCurveEvaluator* -->
-    <pointer-type-def type-id='type-id-13' size-in-bits='64' id='type-id-14'/>
+    <pointer-type-def type-id='type-id-16' size-in-bits='64' id='type-id-17'/>
     <!-- CachingEvaluator* -->
-    <pointer-type-def type-id='type-id-7' size-in-bits='64' id='type-id-10'/>
+    <pointer-type-def type-id='type-id-10' size-in-bits='64' id='type-id-13'/>
     <!-- CurveMap* -->
-    <pointer-type-def type-id='type-id-29' size-in-bits='64' id='type-id-30'/>
+    <pointer-type-def type-id='type-id-18' size-in-bits='64' id='type-id-19'/>
     <!-- OpenGLCurveEvaluator* -->
-    <pointer-type-def type-id='type-id-17' size-in-bits='64' id='type-id-26'/>
-    <!-- OpenGLCurveEvaluator* const -->
-    <qualified-type-def type-id='type-id-26' const='yes' id='type-id-31'/>
+    <pointer-type-def type-id='type-id-20' size-in-bits='64' id='type-id-21'/>
     <!-- REAL* -->
-    <pointer-type-def type-id='type-id-1' size-in-bits='64' id='type-id-16'/>
+    <pointer-type-def type-id='type-id-1' size-in-bits='64' id='type-id-22'/>
     <!-- const GLfloat -->
-    <qualified-type-def type-id='type-id-32' const='yes' id='type-id-33'/>
+    <qualified-type-def type-id='type-id-23' const='yes' id='type-id-24'/>
     <!-- const GLfloat* -->
-    <pointer-type-def type-id='type-id-33' size-in-bits='64' id='type-id-34'/>
+    <pointer-type-def type-id='type-id-24' size-in-bits='64' id='type-id-25'/>
     <!-- curveEvalMachine* -->
-    <pointer-type-def type-id='type-id-18' size-in-bits='64' id='type-id-35'/>
+    <pointer-type-def type-id='type-id-9' size-in-bits='64' id='type-id-26'/>
     <!-- void (const GLfloat*)* -->
-    <pointer-type-def type-id='type-id-36' size-in-bits='64' id='type-id-21'/>
+    <pointer-type-def type-id='type-id-27' size-in-bits='64' id='type-id-28'/>
     <!-- void (const GLfloat*, void*)* -->
-    <pointer-type-def type-id='type-id-37' size-in-bits='64' id='type-id-24'/>
+    <pointer-type-def type-id='type-id-29' size-in-bits='64' id='type-id-30'/>
     <!-- struct CurveMap -->
-    <class-decl name='CurveMap' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-29'/>
-    <!-- float -->
-    <type-decl name='float' size-in-bits='32' id='type-id-28'/>
+    <class-decl name='CurveMap' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-18'/>
+    <!-- class OpenGLCurveEvaluator -->
+    <class-decl name='OpenGLCurveEvaluator' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='66' column='1' is-declaration-only='yes' id='type-id-20'>
+      <!-- struct BasicCurveEvaluator -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-16'/>
+      <data-member access='private' layout-offset-in-bits='64'>
+        <!-- curveEvalMachine OpenGLCurveEvaluator::em_vertex -->
+        <var-decl name='em_vertex' type-id='type-id-9' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='102' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='6656'>
+        <!-- curveEvalMachine OpenGLCurveEvaluator::em_normal -->
+        <var-decl name='em_normal' type-id='type-id-9' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='103' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='13248'>
+        <!-- curveEvalMachine OpenGLCurveEvaluator::em_color -->
+        <var-decl name='em_color' type-id='type-id-9' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='104' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='19840'>
+        <!-- curveEvalMachine OpenGLCurveEvaluator::em_texcoord -->
+        <var-decl name='em_texcoord' type-id='type-id-9' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='105' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='26432'>
+        <!-- int OpenGLCurveEvaluator::vertex_flag -->
+        <var-decl name='vertex_flag' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='106' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='26464'>
+        <!-- int OpenGLCurveEvaluator::normal_flag -->
+        <var-decl name='normal_flag' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='107' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='26496'>
+        <!-- int OpenGLCurveEvaluator::color_flag -->
+        <var-decl name='color_flag' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='108' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='26528'>
+        <!-- int OpenGLCurveEvaluator::texcoord_flag -->
+        <var-decl name='texcoord_flag' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='109' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='26560'>
+        <!-- REAL OpenGLCurveEvaluator::global_grid_u0 -->
+        <var-decl name='global_grid_u0' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='111' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='26592'>
+        <!-- REAL OpenGLCurveEvaluator::global_grid_u1 -->
+        <var-decl name='global_grid_u1' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='112' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='26624'>
+        <!-- int OpenGLCurveEvaluator::global_grid_nu -->
+        <var-decl name='global_grid_nu' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='113' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='26688'>
+        <!-- void (typedef GLenum)* OpenGLCurveEvaluator::beginCallBackN -->
+        <var-decl name='beginCallBackN' type-id='type-id-31' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='128' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='26752'>
+        <!-- void ()* OpenGLCurveEvaluator::endCallBackN -->
+        <var-decl name='endCallBackN' type-id='type-id-32' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='129' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='26816'>
+        <!-- void (const GLfloat*)* OpenGLCurveEvaluator::vertexCallBackN -->
+        <var-decl name='vertexCallBackN' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='130' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='26880'>
+        <!-- void (const GLfloat*)* OpenGLCurveEvaluator::normalCallBackN -->
+        <var-decl name='normalCallBackN' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='131' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='26944'>
+        <!-- void (const GLfloat*)* OpenGLCurveEvaluator::colorCallBackN -->
+        <var-decl name='colorCallBackN' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='132' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='27008'>
+        <!-- void (const GLfloat*)* OpenGLCurveEvaluator::texcoordCallBackN -->
+        <var-decl name='texcoordCallBackN' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='133' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='27072'>
+        <!-- void (typedef GLenum, void*)* OpenGLCurveEvaluator::beginCallBackData -->
+        <var-decl name='beginCallBackData' type-id='type-id-33' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='135' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='27136'>
+        <!-- void (void*)* OpenGLCurveEvaluator::endCallBackData -->
+        <var-decl name='endCallBackData' type-id='type-id-34' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='136' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='27200'>
+        <!-- void (const GLfloat*, void*)* OpenGLCurveEvaluator::vertexCallBackData -->
+        <var-decl name='vertexCallBackData' type-id='type-id-30' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='137' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='27264'>
+        <!-- void (const GLfloat*, void*)* OpenGLCurveEvaluator::normalCallBackData -->
+        <var-decl name='normalCallBackData' type-id='type-id-30' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='138' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='27328'>
+        <!-- void (const GLfloat*, void*)* OpenGLCurveEvaluator::colorCallBackData -->
+        <var-decl name='colorCallBackData' type-id='type-id-30' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='139' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='27392'>
+        <!-- void (const GLfloat*, void*)* OpenGLCurveEvaluator::texcoordCallBackData -->
+        <var-decl name='texcoordCallBackData' type-id='type-id-30' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='140' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='27456'>
+        <!-- void* OpenGLCurveEvaluator::userData -->
+        <var-decl name='userData' type-id='type-id-35' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='142' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='27520'>
+        <!-- int OpenGLCurveEvaluator::output_triangles -->
+        <var-decl name='output_triangles' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glcurveval.h' line='154' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- OpenGLCurveEvaluator::OpenGLCurveEvaluator() -->
+        <function-decl name='OpenGLCurveEvaluator' filepath='libnurbs/interface/glcurveval.cc' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::addMap(CurveMap*) -->
+        <function-decl name='addMap' mangled-name='_ZN20OpenGLCurveEvaluator6addMapEP8CurveMap' filepath='libnurbs/interface/glcurveval.cc' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'CurveMap*' -->
+          <parameter type-id='type-id-19'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::putCallBack(GLenum, _GLUfuncptr) -->
+        <function-decl name='putCallBack' mangled-name='_ZN20OpenGLCurveEvaluator11putCallBackEjPFvvE' filepath='libnurbs/interface/glcurveval.cc' line='305' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'typedef GLenum' -->
+          <parameter type-id='type-id-36'/>
+          <!-- parameter of type 'typedef _GLUfuncptr' -->
+          <parameter type-id='type-id-37'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::beginCallBack(GLenum, void*) -->
+        <function-decl name='beginCallBack' mangled-name='_ZN20OpenGLCurveEvaluator13beginCallBackEjPv' filepath='libnurbs/interface/glcurveval.cc' line='350' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'typedef GLenum' -->
+          <parameter type-id='type-id-36'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::endCallBack(void*) -->
+        <function-decl name='endCallBack' mangled-name='_ZN20OpenGLCurveEvaluator11endCallBackEPv' filepath='libnurbs/interface/glcurveval.cc' line='359' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::vertexCallBack(const GLfloat*, void*) -->
+        <function-decl name='vertexCallBack' mangled-name='_ZN20OpenGLCurveEvaluator14vertexCallBackEPKfPv' filepath='libnurbs/interface/glcurveval.cc' line='368' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'const GLfloat*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::normalCallBack(const GLfloat*, void*) -->
+        <function-decl name='normalCallBack' mangled-name='_ZN20OpenGLCurveEvaluator14normalCallBackEPKfPv' filepath='libnurbs/interface/glcurveval.cc' line='378' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'const GLfloat*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::colorCallBack(const GLfloat*, void*) -->
+        <function-decl name='colorCallBack' mangled-name='_ZN20OpenGLCurveEvaluator13colorCallBackEPKfPv' filepath='libnurbs/interface/glcurveval.cc' line='387' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'const GLfloat*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::texcoordCallBack(const GLfloat*, void*) -->
+        <function-decl name='texcoordCallBack' mangled-name='_ZN20OpenGLCurveEvaluator16texcoordCallBackEPKfPv' filepath='libnurbs/interface/glcurveval.cc' line='396' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'const GLfloat*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::evalpoint1i(long int) -->
+        <function-decl name='evalpoint1i' mangled-name='_ZN20OpenGLCurveEvaluator11evalpoint1iEl' filepath='libnurbs/interface/glcurveval.cc' line='287' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::set_callback_userData(void*) -->
+        <function-decl name='set_callback_userData' mangled-name='_ZN20OpenGLCurveEvaluator21set_callback_userDataEPv' filepath='libnurbs/interface/glcurveval.h' line='96' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::put_vertices_call_back(int) -->
+        <function-decl name='put_vertices_call_back' mangled-name='_ZN20OpenGLCurveEvaluator22put_vertices_call_backEi' filepath='libnurbs/interface/glcurveval.h' line='87' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::inPreEvaluate(int, REAL, REAL*) -->
+        <function-decl name='inPreEvaluate' mangled-name='_ZN20OpenGLCurveEvaluator13inPreEvaluateEifPf' filepath='libnurbs/interface/incurveeval.cc' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::inMap1f(int, int, REAL, REAL, int, int, REAL*) -->
+        <function-decl name='inMap1f' mangled-name='_ZN20OpenGLCurveEvaluator7inMap1fEiiffiiPf' filepath='libnurbs/interface/incurveeval.cc' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::inDoDomain1(curveEvalMachine*, REAL, REAL*) -->
+        <function-decl name='inDoDomain1' mangled-name='_ZN20OpenGLCurveEvaluator11inDoDomain1EP16curveEvalMachinefPf' filepath='libnurbs/interface/incurveeval.cc' line='136' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'curveEvalMachine*' -->
+          <parameter type-id='type-id-26'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::inDoEvalCoord1(REAL) -->
+        <function-decl name='inDoEvalCoord1' mangled-name='_ZN20OpenGLCurveEvaluator14inDoEvalCoord1Ef' filepath='libnurbs/interface/incurveeval.cc' line='162' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLCurveEvaluator::inMapMesh1f(int, int) -->
+        <function-decl name='inMapMesh1f' mangled-name='_ZN20OpenGLCurveEvaluator11inMapMesh1fEii' filepath='libnurbs/interface/incurveeval.cc' line='193' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes' vtable-offset='-1'>
+        <!-- OpenGLCurveEvaluator::~OpenGLCurveEvaluator(int) -->
+        <function-decl name='~OpenGLCurveEvaluator' filepath='libnurbs/interface/glcurveval.cc' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='9'>
+        <!-- void OpenGLCurveEvaluator::domain1f(REAL, REAL) -->
+        <function-decl name='domain1f' mangled-name='_ZN20OpenGLCurveEvaluator8domain1fEff' filepath='libnurbs/interface/glcurveval.cc' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='10'>
+        <!-- void OpenGLCurveEvaluator::range1f(long int, REAL*, REAL*) -->
+        <function-decl name='range1f' mangled-name='_ZN20OpenGLCurveEvaluator7range1fElPfS0_' filepath='libnurbs/interface/glcurveval.cc' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='11'>
+        <!-- void OpenGLCurveEvaluator::enable(long int) -->
+        <function-decl name='enable' mangled-name='_ZN20OpenGLCurveEvaluator6enableEl' filepath='libnurbs/interface/glcurveval.cc' line='137' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='12'>
+        <!-- void OpenGLCurveEvaluator::disable(long int) -->
+        <function-decl name='disable' mangled-name='_ZN20OpenGLCurveEvaluator7disableEl' filepath='libnurbs/interface/glcurveval.cc' line='127' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='13'>
+        <!-- void OpenGLCurveEvaluator::bgnmap1f(long int) -->
+        <function-decl name='bgnmap1f' mangled-name='_ZN20OpenGLCurveEvaluator8bgnmap1fEl' filepath='libnurbs/interface/glcurveval.cc' line='164' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='14'>
+        <!-- void OpenGLCurveEvaluator::map1f(long int, REAL, REAL, long int, long int, REAL*) -->
+        <function-decl name='map1f' mangled-name='_ZN20OpenGLCurveEvaluator5map1fElffllPf' filepath='libnurbs/interface/glcurveval.cc' line='199' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='15'>
+        <!-- void OpenGLCurveEvaluator::mapgrid1f(long int, REAL, REAL) -->
+        <function-decl name='mapgrid1f' mangled-name='_ZN20OpenGLCurveEvaluator9mapgrid1fElff' filepath='libnurbs/interface/glcurveval.cc' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='16'>
+        <!-- void OpenGLCurveEvaluator::mapmesh1f(long int, long int, long int) -->
+        <function-decl name='mapmesh1f' mangled-name='_ZN20OpenGLCurveEvaluator9mapmesh1fElll' filepath='libnurbs/interface/glcurveval.cc' line='262' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='17'>
+        <!-- void OpenGLCurveEvaluator::evalcoord1f(long int, REAL) -->
+        <function-decl name='evalcoord1f' mangled-name='_ZN20OpenGLCurveEvaluator11evalcoord1fElf' filepath='libnurbs/interface/glcurveval.cc' line='296' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='18'>
+        <!-- void OpenGLCurveEvaluator::endmap1f() -->
+        <function-decl name='endmap1f' mangled-name='_ZN20OpenGLCurveEvaluator8endmap1fEv' filepath='libnurbs/interface/glcurveval.cc' line='184' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='19'>
+        <!-- void OpenGLCurveEvaluator::bgnline() -->
+        <function-decl name='bgnline' mangled-name='_ZN20OpenGLCurveEvaluator7bgnlineEv' filepath='libnurbs/interface/glcurveval.cc' line='105' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='20'>
+        <!-- void OpenGLCurveEvaluator::endline() -->
+        <function-decl name='endline' mangled-name='_ZN20OpenGLCurveEvaluator7endlineEv' filepath='libnurbs/interface/glcurveval.cc' line='114' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLCurveEvaluator*' -->
+          <parameter type-id='type-id-21' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- struct BasicCurveEvaluator -->
+    <class-decl name='BasicCurveEvaluator' is-struct='yes' visibility='default' filepath='libnurbs/internals/basiccrveval.h' line='43' column='1' is-declaration-only='yes' id='type-id-16'>
+      <!-- class CachingEvaluator -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-10'/>
+      <member-function access='public' destructor='yes' vtable-offset='-1'>
+        <!-- BasicCurveEvaluator::~BasicCurveEvaluator(int) -->
+        <function-decl name='~BasicCurveEvaluator' filepath='libnurbs/internals/basiccrveval.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='9'>
+        <!-- void BasicCurveEvaluator::domain1f(REAL, REAL) -->
+        <function-decl name='domain1f' mangled-name='_ZN19BasicCurveEvaluator8domain1fEff' filepath='libnurbs/internals/basiccrveval.cc' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='10'>
+        <!-- void BasicCurveEvaluator::range1f(long int, REAL*, REAL*) -->
+        <function-decl name='range1f' mangled-name='_ZN19BasicCurveEvaluator7range1fElPfS0_' filepath='libnurbs/internals/basiccrveval.cc' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='11'>
+        <!-- void BasicCurveEvaluator::enable(long int) -->
+        <function-decl name='enable' mangled-name='_ZN19BasicCurveEvaluator6enableEl' filepath='libnurbs/internals/basiccrveval.cc' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='12'>
+        <!-- void BasicCurveEvaluator::disable(long int) -->
+        <function-decl name='disable' mangled-name='_ZN19BasicCurveEvaluator7disableEl' filepath='libnurbs/internals/basiccrveval.cc' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='13'>
+        <!-- void BasicCurveEvaluator::bgnmap1f(long int) -->
+        <function-decl name='bgnmap1f' mangled-name='_ZN19BasicCurveEvaluator8bgnmap1fEl' filepath='libnurbs/internals/basiccrveval.cc' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='14'>
+        <!-- void BasicCurveEvaluator::map1f(long int, REAL, REAL, long int, long int, REAL*) -->
+        <function-decl name='map1f' mangled-name='_ZN19BasicCurveEvaluator5map1fElffllPf' filepath='libnurbs/internals/basiccrveval.cc' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='15'>
+        <!-- void BasicCurveEvaluator::mapgrid1f(long int, REAL, REAL) -->
+        <function-decl name='mapgrid1f' mangled-name='_ZN19BasicCurveEvaluator9mapgrid1fElff' filepath='libnurbs/internals/basiccrveval.cc' line='93' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='16'>
+        <!-- void BasicCurveEvaluator::mapmesh1f(long int, long int, long int) -->
+        <function-decl name='mapmesh1f' mangled-name='_ZN19BasicCurveEvaluator9mapmesh1fElll' filepath='libnurbs/internals/basiccrveval.cc' line='101' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='17'>
+        <!-- void BasicCurveEvaluator::evalcoord1f(long int, REAL) -->
+        <function-decl name='evalcoord1f' mangled-name='_ZN19BasicCurveEvaluator11evalcoord1fElf' filepath='libnurbs/internals/basiccrveval.cc' line='109' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='18'>
+        <!-- void BasicCurveEvaluator::endmap1f() -->
+        <function-decl name='endmap1f' mangled-name='_ZN19BasicCurveEvaluator8endmap1fEv' filepath='libnurbs/internals/basiccrveval.cc' line='117' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='19'>
+        <!-- void BasicCurveEvaluator::bgnline() -->
+        <function-decl name='bgnline' mangled-name='_ZN19BasicCurveEvaluator7bgnlineEv' filepath='libnurbs/internals/basiccrveval.cc' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='20'>
+        <!-- void BasicCurveEvaluator::endline() -->
+        <function-decl name='endline' mangled-name='_ZN19BasicCurveEvaluator7endlineEv' filepath='libnurbs/internals/basiccrveval.cc' line='133' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicCurveEvaluator*' -->
+          <parameter type-id='type-id-17' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
     <!-- void (const GLfloat*) -->
-    <function-type size-in-bits='64' id='type-id-36'>
+    <function-type size-in-bits='64' id='type-id-27'>
       <!-- parameter of type 'const GLfloat*' -->
-      <parameter type-id='type-id-34'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-type>
-    <!-- void (const GLfloat*, void*) -->
-    <function-type size-in-bits='64' id='type-id-37'>
-      <!-- parameter of type 'const GLfloat*' -->
-      <parameter type-id='type-id-34'/>
-      <!-- parameter of type 'void*' -->
       <parameter type-id='type-id-25'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-type>
-    <!-- int -->
-    <type-decl name='int' size-in-bits='32' id='type-id-11'/>
-    <!-- long int -->
-    <type-decl name='long int' size-in-bits='64' id='type-id-15'/>
-    <!-- typedef float GLfloat -->
-    <typedef-decl name='GLfloat' type-id='type-id-28' filepath='../../../include/GL/gl.h' line='160' column='1' id='type-id-32'/>
-    <!-- unsigned long int -->
-    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-3'/>
-    <!-- void -->
-    <type-decl name='void' id='type-id-12'/>
-    <!-- void ()* -->
-    <pointer-type-def type-id='type-id-38' size-in-bits='64' id='type-id-20'/>
-    <!-- void (typedef GLenum)* -->
-    <pointer-type-def type-id='type-id-39' size-in-bits='64' id='type-id-19'/>
-    <!-- void (typedef GLenum, void*)* -->
-    <pointer-type-def type-id='type-id-40' size-in-bits='64' id='type-id-22'/>
-    <!-- void (void*)* -->
-    <pointer-type-def type-id='type-id-41' size-in-bits='64' id='type-id-23'/>
-    <!-- void* -->
-    <pointer-type-def type-id='type-id-12' size-in-bits='64' id='type-id-25'/>
+    <!-- void (const GLfloat*, void*) -->
+    <function-type size-in-bits='64' id='type-id-29'>
+      <!-- parameter of type 'const GLfloat*' -->
+      <parameter type-id='type-id-25'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-35'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-type>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/interface/glinterface.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- struct GLUnurbs -->
-    <class-decl name='GLUnurbs' size-in-bits='1149440' is-struct='yes' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='49' column='1' id='type-id-42'>
+    <class-decl name='GLUnurbs' size-in-bits='1149440' is-struct='yes' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='49' column='1' id='type-id-39'>
       <!-- class NurbsTessellator -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-43'/>
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-40'/>
       <data-member access='public' layout-offset-in-bits='47616'>
         <!-- errorCallbackType GLUnurbs::errorCallback -->
-        <var-decl name='errorCallback' type-id='type-id-44' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='71' column='1'/>
+        <var-decl name='errorCallback' type-id='type-id-41' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='71' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='47680'>
         <!-- GLboolean GLUnurbs::autoloadmode -->
-        <var-decl name='autoloadmode' type-id='type-id-45' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='130' column='1'/>
+        <var-decl name='autoloadmode' type-id='type-id-42' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='130' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='47744'>
         <!-- OpenGLSurfaceEvaluator GLUnurbs::surfaceEvaluator -->
-        <var-decl name='surfaceEvaluator' type-id='type-id-46' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='131' column='1'/>
+        <var-decl name='surfaceEvaluator' type-id='type-id-43' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='131' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1121792'>
         <!-- OpenGLCurveEvaluator GLUnurbs::curveEvaluator -->
-        <var-decl name='curveEvaluator' type-id='type-id-17' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='132' column='1'/>
+        <var-decl name='curveEvaluator' type-id='type-id-20' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='132' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1149376'>
         <!-- int GLUnurbs::callbackFlag -->
-        <var-decl name='callbackFlag' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='143' column='1'/>
+        <var-decl name='callbackFlag' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glrenderer.h' line='143' column='1'/>
       </data-member>
+      <member-function access='public'>
+        <!-- void GLUnurbs::setNurbsCallbackData(void*) -->
+        <function-decl name='setNurbsCallbackData' mangled-name='_ZN8GLUnurbs20setNurbsCallbackDataEPv' filepath='libnurbs/interface/glrenderer.h' line='104' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void GLUnurbs::putSurfCallBack(GLenum, _GLUfuncptr) -->
+        <function-decl name='putSurfCallBack' mangled-name='_ZN8GLUnurbs15putSurfCallBackEjPFvvE' filepath='libnurbs/interface/glrenderer.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- parameter of type 'typedef GLenum' -->
+          <parameter type-id='type-id-36'/>
+          <!-- parameter of type 'typedef _GLUfuncptr' -->
+          <parameter type-id='type-id-37'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void GLUnurbs::postError(int) -->
+        <function-decl name='postError' mangled-name='_ZN8GLUnurbs9postErrorEi' filepath='libnurbs/interface/glrenderer.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- GLboolean GLUnurbs::getautoloadmode() -->
+        <function-decl name='getautoloadmode' mangled-name='_ZN8GLUnurbs15getautoloadmodeEv' filepath='libnurbs/interface/glrenderer.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- typedef GLboolean -->
+          <return type-id='type-id-42'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int GLUnurbs::is_callback() -->
+        <function-decl name='is_callback' mangled-name='_ZN8GLUnurbs11is_callbackEv' filepath='libnurbs/interface/glrenderer.h' line='118' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void GLUnurbs::setautoloadmode(float) -->
+        <function-decl name='setautoloadmode' mangled-name='_ZN8GLUnurbs15setautoloadmodeEf' filepath='libnurbs/interface/glrenderer.h' line='62' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- parameter of type 'float' -->
+          <parameter type-id='type-id-15'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void GLUnurbs::put_callbackFlag(int) -->
+        <function-decl name='put_callbackFlag' mangled-name='_ZN8GLUnurbs16put_callbackFlagEi' filepath='libnurbs/interface/glrenderer.h' line='122' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void GLUnurbs::LOD_eval_list(int) -->
+        <function-decl name='LOD_eval_list' mangled-name='_ZN8GLUnurbs13LOD_eval_listEi' filepath='libnurbs/interface/glrenderer.h' line='112' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
       <member-function access='public' constructor='yes'>
         <!-- GLUnurbs::GLUnurbs() -->
         <function-decl name='GLUnurbs' filepath='libnurbs/interface/glrenderer.cc' line='42' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-47' is-artificial='yes'/>
+          <parameter type-id='type-id-44' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' static='yes'>
+        <!-- void GLUnurbs::transform4d(GLfloat*, GLfloat[4]*) -->
+        <function-decl name='transform4d' mangled-name='_ZN8GLUnurbs11transform4dEPfS0_PA4_f' filepath='libnurbs/interface/glrenderer.cc' line='280' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'GLfloat*' -->
+          <parameter type-id='type-id-45'/>
+          <!-- parameter of type 'GLfloat*' -->
+          <parameter type-id='type-id-45'/>
+          <!-- parameter of type 'GLfloat[4]*' -->
+          <parameter type-id='type-id-46'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' static='yes'>
+        <!-- void GLUnurbs::multmatrix4d(GLfloat[4]*, GLfloat[4]*) -->
+        <function-decl name='multmatrix4d' mangled-name='_ZN8GLUnurbs12multmatrix4dEPA4_fPA4_KfS4_' filepath='libnurbs/interface/glrenderer.cc' line='294' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'GLfloat[4]*' -->
+          <parameter type-id='type-id-46'/>
+          <!-- parameter of type 'GLfloat[4]*' -->
+          <parameter type-id='type-id-46'/>
+          <!-- parameter of type 'GLfloat[4]*' -->
+          <parameter type-id='type-id-46'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void GLUnurbs::loadCullingMatrix(GLfloat[4]*) -->
+        <function-decl name='loadCullingMatrix' mangled-name='_ZN8GLUnurbs17loadCullingMatrixEPA4_f' filepath='libnurbs/interface/glrenderer.cc' line='237' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- parameter of type 'GLfloat[4]*' -->
+          <parameter type-id='type-id-46'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void GLUnurbs::loadSamplingMatrix(GLfloat[4]*, const GLint*) -->
+        <function-decl name='loadSamplingMatrix' mangled-name='_ZN8GLUnurbs18loadSamplingMatrixEPA4_KfPKi' filepath='libnurbs/interface/glrenderer.cc' line='194' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- parameter of type 'GLfloat[4]*' -->
+          <parameter type-id='type-id-46'/>
+          <!-- parameter of type 'const GLint*' -->
+          <parameter type-id='type-id-47'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void GLUnurbs::useGLMatrices(const GLfloat*, const GLfloat*, const GLint*) -->
+        <function-decl name='useGLMatrices' mangled-name='_ZN8GLUnurbs13useGLMatricesEPKfS1_PKi' filepath='libnurbs/interface/glrenderer.cc' line='141' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- parameter of type 'const GLfloat*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'const GLfloat*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'const GLint*' -->
+          <parameter type-id='type-id-47'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void GLUnurbs::setSamplingMatrixIdentity() -->
+        <function-decl name='setSamplingMatrixIdentity' mangled-name='_ZN8GLUnurbs25setSamplingMatrixIdentityEv' filepath='libnurbs/interface/glrenderer.cc' line='171' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' static='yes'>
+        <!-- void GLUnurbs::grabGLMatrix() -->
+        <function-decl name='grabGLMatrix' mangled-name='_ZN8GLUnurbs12grabGLMatrixEPA4_f' filepath='libnurbs/interface/glrenderer.cc' line='159' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'GLfloat[4]*' -->
+          <parameter type-id='type-id-46'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void GLUnurbs::loadGLMatrices() -->
+        <function-decl name='loadGLMatrices' mangled-name='_ZN8GLUnurbs14loadGLMatricesEv' filepath='libnurbs/interface/glrenderer.cc' line='129' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GLUnurbs*' -->
+          <parameter type-id='type-id-44' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='2'>
         <!-- void GLUnurbs::bgnrender() -->
         <function-decl name='bgnrender' mangled-name='_ZN8GLUnurbs9bgnrenderEv' filepath='libnurbs/interface/glrenderer.cc' line='107' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-47' is-artificial='yes'/>
+          <parameter type-id='type-id-44' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='3'>
         <!-- void GLUnurbs::endrender() -->
         <function-decl name='endrender' mangled-name='_ZN8GLUnurbs9endrenderEv' filepath='libnurbs/interface/glrenderer.cc' line='115' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-47' is-artificial='yes'/>
+          <parameter type-id='type-id-44' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='6'>
         <!-- void GLUnurbs::errorHandler(int) -->
         <function-decl name='errorHandler' mangled-name='_ZN8GLUnurbs12errorHandlerEi' filepath='libnurbs/interface/glrenderer.cc' line='120' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'GLUnurbs*' -->
-          <parameter type-id='type-id-47' is-artificial='yes'/>
+          <parameter type-id='type-id-44' is-artificial='yes'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
+    <!-- GLUnurbs* -->
+    <pointer-type-def type-id='type-id-39' size-in-bits='64' id='type-id-44'/>
+    <!-- OpenGLSurfaceEvaluator* -->
+    <pointer-type-def type-id='type-id-43' size-in-bits='64' id='type-id-48'/>
+    <!-- float* -->
+    <pointer-type-def type-id='type-id-15' size-in-bits='64' id='type-id-49'/>
+    <!-- GLUnurbs* gluNewNurbsRenderer() -->
+    <function-decl name='gluNewNurbsRenderer' mangled-name='gluNewNurbsRenderer' filepath='libnurbs/interface/glinterface.cc' line='66' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNewNurbsRenderer'>
+      <!-- GLUnurbs* -->
+      <return type-id='type-id-44'/>
+    </function-decl>
+    <!-- void gluDeleteNurbsRenderer(GLUnurbs*) -->
+    <function-decl name='gluDeleteNurbsRenderer' mangled-name='gluDeleteNurbsRenderer' filepath='libnurbs/interface/glinterface.cc' line='75' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluDeleteNurbsRenderer'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluBeginSurface(GLUnurbs*) -->
+    <function-decl name='gluBeginSurface' mangled-name='gluBeginSurface' filepath='libnurbs/interface/glinterface.cc' line='89' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBeginSurface'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluBeginCurve(GLUnurbs*) -->
+    <function-decl name='gluBeginCurve' mangled-name='gluBeginCurve' filepath='libnurbs/interface/glinterface.cc' line='99' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBeginCurve'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluEndCurve(GLUnurbs*) -->
+    <function-decl name='gluEndCurve' mangled-name='gluEndCurve' filepath='libnurbs/interface/glinterface.cc' line='105' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluEndCurve'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluEndSurface(GLUnurbs*) -->
+    <function-decl name='gluEndSurface' mangled-name='gluEndSurface' filepath='libnurbs/interface/glinterface.cc' line='111' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluEndSurface'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluBeginTrim(GLUnurbs*) -->
+    <function-decl name='gluBeginTrim' mangled-name='gluBeginTrim' filepath='libnurbs/interface/glinterface.cc' line='131' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBeginTrim'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluEndTrim(GLUnurbs*) -->
+    <function-decl name='gluEndTrim' mangled-name='gluEndTrim' filepath='libnurbs/interface/glinterface.cc' line='141' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluEndTrim'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluPwlCurve(GLUnurbs*, GLint, float*, GLint, GLenum) -->
+    <function-decl name='gluPwlCurve' mangled-name='gluPwlCurve' filepath='libnurbs/interface/glinterface.cc' line='150' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluPwlCurve'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='150' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='count' filepath='libnurbs/interface/glinterface.cc' line='150' column='1'/>
+      <!-- parameter of type 'float*' -->
+      <parameter type-id='type-id-49' name='array' filepath='libnurbs/interface/glinterface.cc' line='150' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='stride' filepath='libnurbs/interface/glinterface.cc' line='151' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='type' filepath='libnurbs/interface/glinterface.cc' line='151' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluNurbsCurve(GLUnurbs*, GLint, float*, GLint, float*, GLint, GLenum) -->
+    <function-decl name='gluNurbsCurve' mangled-name='gluNurbsCurve' filepath='libnurbs/interface/glinterface.cc' line='173' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNurbsCurve'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='173' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='nknots' filepath='libnurbs/interface/glinterface.cc' line='173' column='1'/>
+      <!-- parameter of type 'float*' -->
+      <parameter type-id='type-id-49' name='knot' filepath='libnurbs/interface/glinterface.cc' line='173' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='stride' filepath='libnurbs/interface/glinterface.cc' line='173' column='1'/>
+      <!-- parameter of type 'float*' -->
+      <parameter type-id='type-id-49' name='ctlarray' filepath='libnurbs/interface/glinterface.cc' line='174' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='order' filepath='libnurbs/interface/glinterface.cc' line='174' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='type' filepath='libnurbs/interface/glinterface.cc' line='174' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluNurbsSurface(GLUnurbs*, GLint, GLfloat*, GLint, GLfloat*, GLint, GLint, GLfloat*, GLint, GLint, GLenum) -->
+    <function-decl name='gluNurbsSurface' mangled-name='gluNurbsSurface' filepath='libnurbs/interface/glinterface.cc' line='199' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNurbsSurface'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='199' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='sknot_count' filepath='libnurbs/interface/glinterface.cc' line='199' column='1'/>
+      <!-- parameter of type 'GLfloat*' -->
+      <parameter type-id='type-id-45' name='sknot' filepath='libnurbs/interface/glinterface.cc' line='199' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='tknot_count' filepath='libnurbs/interface/glinterface.cc' line='200' column='1'/>
+      <!-- parameter of type 'GLfloat*' -->
+      <parameter type-id='type-id-45' name='tknot' filepath='libnurbs/interface/glinterface.cc' line='200' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='s_stride' filepath='libnurbs/interface/glinterface.cc' line='201' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='t_stride' filepath='libnurbs/interface/glinterface.cc' line='201' column='1'/>
+      <!-- parameter of type 'GLfloat*' -->
+      <parameter type-id='type-id-45' name='ctlarray' filepath='libnurbs/interface/glinterface.cc' line='202' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='sorder' filepath='libnurbs/interface/glinterface.cc' line='202' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='torder' filepath='libnurbs/interface/glinterface.cc' line='202' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='type' filepath='libnurbs/interface/glinterface.cc' line='203' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluLoadSamplingMatrices(GLUnurbs*, const GLfloat*, const GLfloat*, const GLint*) -->
+    <function-decl name='gluLoadSamplingMatrices' mangled-name='gluLoadSamplingMatrices' filepath='libnurbs/interface/glinterface.cc' line='235' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluLoadSamplingMatrices'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='235' column='1'/>
+      <!-- parameter of type 'const GLfloat*' -->
+      <parameter type-id='type-id-25' name='modelMatrix' filepath='libnurbs/interface/glinterface.cc' line='235' column='1'/>
+      <!-- parameter of type 'const GLfloat*' -->
+      <parameter type-id='type-id-25' name='projMatrix' filepath='libnurbs/interface/glinterface.cc' line='236' column='1'/>
+      <!-- parameter of type 'const GLint*' -->
+      <parameter type-id='type-id-47' name='viewport' filepath='libnurbs/interface/glinterface.cc' line='237' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluNurbsProperty(GLUnurbs*, GLenum, GLfloat) -->
+    <function-decl name='gluNurbsProperty' mangled-name='gluNurbsProperty' filepath='libnurbs/interface/glinterface.cc' line='243' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNurbsProperty'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='243' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='property' filepath='libnurbs/interface/glinterface.cc' line='243' column='1'/>
+      <!-- parameter of type 'typedef GLfloat' -->
+      <parameter type-id='type-id-23' name='value' filepath='libnurbs/interface/glinterface.cc' line='243' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluGetNurbsProperty(GLUnurbs*, GLenum, GLfloat*) -->
+    <function-decl name='gluGetNurbsProperty' mangled-name='gluGetNurbsProperty' filepath='libnurbs/interface/glinterface.cc' line='359' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluGetNurbsProperty'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='359' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='property' filepath='libnurbs/interface/glinterface.cc' line='359' column='1'/>
+      <!-- parameter of type 'GLfloat*' -->
+      <parameter type-id='type-id-45' name='value' filepath='libnurbs/interface/glinterface.cc' line='359' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluNurbsCallback(GLUnurbs*, GLenum, _GLUfuncptr) -->
+    <function-decl name='gluNurbsCallback' mangled-name='gluNurbsCallback' filepath='libnurbs/interface/glinterface.cc' line='430' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNurbsCallback'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='430' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='which' filepath='libnurbs/interface/glinterface.cc' line='430' column='1'/>
+      <!-- parameter of type 'typedef _GLUfuncptr' -->
+      <parameter type-id='type-id-37' name='fn' filepath='libnurbs/interface/glinterface.cc' line='430' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluNurbsCallbackDataEXT(GLUnurbs*, void*) -->
+    <function-decl name='gluNurbsCallbackDataEXT' mangled-name='gluNurbsCallbackDataEXT' filepath='libnurbs/interface/glinterface.cc' line='459' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNurbsCallbackDataEXT'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='459' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-35' name='userData' filepath='libnurbs/interface/glinterface.cc' line='459' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluNurbsCallbackData(GLUnurbs*, void*) -->
+    <function-decl name='gluNurbsCallbackData' mangled-name='gluNurbsCallbackData' filepath='libnurbs/interface/glinterface.cc' line='466' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNurbsCallbackData'>
+      <!-- parameter of type 'GLUnurbs*' -->
+      <parameter type-id='type-id-44' name='r' filepath='libnurbs/interface/glinterface.cc' line='459' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-35' name='userData' filepath='libnurbs/interface/glinterface.cc' line='459' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
     <!-- struct OpenGLSurfaceEvaluator -->
-    <class-decl name='OpenGLSurfaceEvaluator' size-in-bits='1074048' is-struct='yes' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='100' column='1' id='type-id-46'>
+    <class-decl name='OpenGLSurfaceEvaluator' is-struct='yes' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='100' column='1' is-declaration-only='yes' id='type-id-43'>
       <!-- struct BasicSurfaceEvaluator -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-48'/>
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-51'/>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- StoredVertex* OpenGLSurfaceEvaluator::vertexCache[3] -->
-        <var-decl name='vertexCache' type-id='type-id-49' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='180' column='1'/>
+        <var-decl name='vertexCache' type-id='type-id-52' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='180' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='256'>
         <!-- int OpenGLSurfaceEvaluator::tmeshing -->
-        <var-decl name='tmeshing' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='181' column='1'/>
+        <var-decl name='tmeshing' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='181' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='288'>
         <!-- int OpenGLSurfaceEvaluator::which -->
-        <var-decl name='which' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='182' column='1'/>
+        <var-decl name='which' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='182' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='320'>
         <!-- int OpenGLSurfaceEvaluator::vcount -->
-        <var-decl name='vcount' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='183' column='1'/>
+        <var-decl name='vcount' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='183' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='352'>
         <!-- GLint OpenGLSurfaceEvaluator::gl_polygon_mode[2] -->
-        <var-decl name='gl_polygon_mode' type-id='type-id-50' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='185' column='1'/>
+        <var-decl name='gl_polygon_mode' type-id='type-id-53' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='185' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='448'>
         <!-- bezierPatchMesh* OpenGLSurfaceEvaluator::global_bpm -->
-        <var-decl name='global_bpm' type-id='type-id-51' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='188' column='1'/>
+        <var-decl name='global_bpm' type-id='type-id-54' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='188' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='512'>
         <!-- int OpenGLSurfaceEvaluator::output_triangles -->
-        <var-decl name='output_triangles' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='189' column='1'/>
+        <var-decl name='output_triangles' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='189' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='576'>
         <!-- void (typedef GLenum)* OpenGLSurfaceEvaluator::beginCallBackN -->
-        <var-decl name='beginCallBackN' type-id='type-id-19' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='193' column='1'/>
+        <var-decl name='beginCallBackN' type-id='type-id-31' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='193' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='640'>
         <!-- void ()* OpenGLSurfaceEvaluator::endCallBackN -->
-        <var-decl name='endCallBackN' type-id='type-id-20' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='194' column='1'/>
+        <var-decl name='endCallBackN' type-id='type-id-32' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='194' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='704'>
         <!-- void (const GLfloat*)* OpenGLSurfaceEvaluator::vertexCallBackN -->
-        <var-decl name='vertexCallBackN' type-id='type-id-21' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='195' column='1'/>
+        <var-decl name='vertexCallBackN' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='195' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='768'>
         <!-- void (const GLfloat*)* OpenGLSurfaceEvaluator::normalCallBackN -->
-        <var-decl name='normalCallBackN' type-id='type-id-21' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='196' column='1'/>
+        <var-decl name='normalCallBackN' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='196' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='832'>
         <!-- void (const GLfloat*)* OpenGLSurfaceEvaluator::colorCallBackN -->
-        <var-decl name='colorCallBackN' type-id='type-id-21' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='197' column='1'/>
+        <var-decl name='colorCallBackN' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='197' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='896'>
         <!-- void (const GLfloat*)* OpenGLSurfaceEvaluator::texcoordCallBackN -->
-        <var-decl name='texcoordCallBackN' type-id='type-id-21' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='198' column='1'/>
+        <var-decl name='texcoordCallBackN' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='198' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='960'>
         <!-- void (typedef GLenum, void*)* OpenGLSurfaceEvaluator::beginCallBackData -->
-        <var-decl name='beginCallBackData' type-id='type-id-22' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='200' column='1'/>
+        <var-decl name='beginCallBackData' type-id='type-id-33' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='200' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1024'>
         <!-- void (void*)* OpenGLSurfaceEvaluator::endCallBackData -->
-        <var-decl name='endCallBackData' type-id='type-id-23' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='201' column='1'/>
+        <var-decl name='endCallBackData' type-id='type-id-34' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='201' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1088'>
         <!-- void (const GLfloat*, void*)* OpenGLSurfaceEvaluator::vertexCallBackData -->
-        <var-decl name='vertexCallBackData' type-id='type-id-24' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='202' column='1'/>
+        <var-decl name='vertexCallBackData' type-id='type-id-30' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='202' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1152'>
         <!-- void (const GLfloat*, void*)* OpenGLSurfaceEvaluator::normalCallBackData -->
-        <var-decl name='normalCallBackData' type-id='type-id-24' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='203' column='1'/>
+        <var-decl name='normalCallBackData' type-id='type-id-30' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='203' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1216'>
         <!-- void (const GLfloat*, void*)* OpenGLSurfaceEvaluator::colorCallBackData -->
-        <var-decl name='colorCallBackData' type-id='type-id-24' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='204' column='1'/>
+        <var-decl name='colorCallBackData' type-id='type-id-30' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='204' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1280'>
         <!-- void (const GLfloat*, void*)* OpenGLSurfaceEvaluator::texcoordCallBackData -->
-        <var-decl name='texcoordCallBackData' type-id='type-id-24' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='205' column='1'/>
+        <var-decl name='texcoordCallBackData' type-id='type-id-30' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='205' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1344'>
         <!-- void* OpenGLSurfaceEvaluator::userData -->
-        <var-decl name='userData' type-id='type-id-25' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='215' column='1'/>
+        <var-decl name='userData' type-id='type-id-35' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='215' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1408'>
         <!-- int OpenGLSurfaceEvaluator::LOD_eval_level -->
-        <var-decl name='LOD_eval_level' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='222' column='1'/>
+        <var-decl name='LOD_eval_level' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='222' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1440'>
         <!-- int OpenGLSurfaceEvaluator::global_uorder -->
-        <var-decl name='global_uorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='231' column='1'/>
+        <var-decl name='global_uorder' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='231' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1472'>
         <!-- int OpenGLSurfaceEvaluator::global_vorder -->
-        <var-decl name='global_vorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='232' column='1'/>
+        <var-decl name='global_vorder' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='232' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1504'>
         <!-- REAL OpenGLSurfaceEvaluator::global_uprime -->
@@ -958,19 +1507,19 @@
       </data-member>
       <data-member access='private' layout-offset-in-bits='1632'>
         <!-- int OpenGLSurfaceEvaluator::global_uorder_BV -->
-        <var-decl name='global_uorder_BV' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='237' column='1'/>
+        <var-decl name='global_uorder_BV' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='237' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1664'>
         <!-- int OpenGLSurfaceEvaluator::global_vorder_BV -->
-        <var-decl name='global_vorder_BV' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='238' column='1'/>
+        <var-decl name='global_vorder_BV' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='238' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1696'>
         <!-- int OpenGLSurfaceEvaluator::global_uorder_BU -->
-        <var-decl name='global_uorder_BU' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='239' column='1'/>
+        <var-decl name='global_uorder_BU' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='239' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1728'>
         <!-- int OpenGLSurfaceEvaluator::global_vorder_BU -->
-        <var-decl name='global_vorder_BU' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='240' column='1'/>
+        <var-decl name='global_vorder_BU' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='240' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1760'>
         <!-- REAL OpenGLSurfaceEvaluator::global_ucoeff[40] -->
@@ -990,27 +1539,27 @@
       </data-member>
       <data-member access='private' layout-offset-in-bits='6880'>
         <!-- REAL OpenGLSurfaceEvaluator::global_BV[40][4] -->
-        <var-decl name='global_BV' type-id='type-id-52' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='247' column='1'/>
+        <var-decl name='global_BV' type-id='type-id-55' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='247' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='12000'>
         <!-- REAL OpenGLSurfaceEvaluator::global_PBV[40][4] -->
-        <var-decl name='global_PBV' type-id='type-id-52' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='248' column='1'/>
+        <var-decl name='global_PBV' type-id='type-id-55' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='248' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='17120'>
         <!-- REAL OpenGLSurfaceEvaluator::global_BU[40][4] -->
-        <var-decl name='global_BU' type-id='type-id-52' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='249' column='1'/>
+        <var-decl name='global_BU' type-id='type-id-55' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='249' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='22240'>
         <!-- REAL OpenGLSurfaceEvaluator::global_PBU[40][4] -->
-        <var-decl name='global_PBU' type-id='type-id-52' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='250' column='1'/>
+        <var-decl name='global_PBU' type-id='type-id-55' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='250' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='27392'>
         <!-- REAL* OpenGLSurfaceEvaluator::global_baseData -->
-        <var-decl name='global_baseData' type-id='type-id-16' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='251' column='1'/>
+        <var-decl name='global_baseData' type-id='type-id-22' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='251' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='27456'>
         <!-- int OpenGLSurfaceEvaluator::global_ev_k -->
-        <var-decl name='global_ev_k' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='253' column='1'/>
+        <var-decl name='global_ev_k' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='253' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='27488'>
         <!-- REAL OpenGLSurfaceEvaluator::global_ev_u1 -->
@@ -1022,11 +1571,11 @@
       </data-member>
       <data-member access='private' layout-offset-in-bits='27552'>
         <!-- int OpenGLSurfaceEvaluator::global_ev_ustride -->
-        <var-decl name='global_ev_ustride' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='256' column='1'/>
+        <var-decl name='global_ev_ustride' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='256' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='27584'>
         <!-- int OpenGLSurfaceEvaluator::global_ev_uorder -->
-        <var-decl name='global_ev_uorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='257' column='1'/>
+        <var-decl name='global_ev_uorder' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='257' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='27616'>
         <!-- REAL OpenGLSurfaceEvaluator::global_ev_v1 -->
@@ -1038,15 +1587,15 @@
       </data-member>
       <data-member access='private' layout-offset-in-bits='27680'>
         <!-- int OpenGLSurfaceEvaluator::global_ev_vstride -->
-        <var-decl name='global_ev_vstride' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='260' column='1'/>
+        <var-decl name='global_ev_vstride' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='260' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='27712'>
         <!-- int OpenGLSurfaceEvaluator::global_ev_vorder -->
-        <var-decl name='global_ev_vorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='261' column='1'/>
+        <var-decl name='global_ev_vorder' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='261' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='27744'>
         <!-- REAL OpenGLSurfaceEvaluator::global_ev_ctlPoints[6400] -->
-        <var-decl name='global_ev_ctlPoints' type-id='type-id-53' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='262' column='1'/>
+        <var-decl name='global_ev_ctlPoints' type-id='type-id-56' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='262' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='232544'>
         <!-- REAL OpenGLSurfaceEvaluator::global_grid_u0 -->
@@ -1058,7 +1607,7 @@
       </data-member>
       <data-member access='private' layout-offset-in-bits='232608'>
         <!-- int OpenGLSurfaceEvaluator::global_grid_nu -->
-        <var-decl name='global_grid_nu' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='266' column='1'/>
+        <var-decl name='global_grid_nu' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='266' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='232640'>
         <!-- REAL OpenGLSurfaceEvaluator::global_grid_v0 -->
@@ -1070,88 +1619,787 @@
       </data-member>
       <data-member access='private' layout-offset-in-bits='232704'>
         <!-- int OpenGLSurfaceEvaluator::global_grid_nv -->
-        <var-decl name='global_grid_nv' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='269' column='1'/>
+        <var-decl name='global_grid_nv' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='269' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='232736'>
         <!-- surfEvalMachine OpenGLSurfaceEvaluator::em_vertex -->
-        <var-decl name='em_vertex' type-id='type-id-54' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='349' column='1'/>
+        <var-decl name='em_vertex' type-id='type-id-57' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='349' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='443008'>
         <!-- surfEvalMachine OpenGLSurfaceEvaluator::em_normal -->
-        <var-decl name='em_normal' type-id='type-id-54' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='350' column='1'/>
+        <var-decl name='em_normal' type-id='type-id-57' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='350' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='653280'>
         <!-- surfEvalMachine OpenGLSurfaceEvaluator::em_color -->
-        <var-decl name='em_color' type-id='type-id-54' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='351' column='1'/>
+        <var-decl name='em_color' type-id='type-id-57' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='351' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='863552'>
         <!-- surfEvalMachine OpenGLSurfaceEvaluator::em_texcoord -->
-        <var-decl name='em_texcoord' type-id='type-id-54' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='352' column='1'/>
+        <var-decl name='em_texcoord' type-id='type-id-57' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='352' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1073824'>
         <!-- int OpenGLSurfaceEvaluator::auto_normal_flag -->
-        <var-decl name='auto_normal_flag' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='354' column='1'/>
+        <var-decl name='auto_normal_flag' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='354' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1073856'>
         <!-- int OpenGLSurfaceEvaluator::callback_auto_normal -->
-        <var-decl name='callback_auto_normal' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='356' column='1'/>
+        <var-decl name='callback_auto_normal' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='356' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1073888'>
         <!-- int OpenGLSurfaceEvaluator::vertex_flag -->
-        <var-decl name='vertex_flag' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='357' column='1'/>
+        <var-decl name='vertex_flag' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='357' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1073920'>
         <!-- int OpenGLSurfaceEvaluator::normal_flag -->
-        <var-decl name='normal_flag' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='358' column='1'/>
+        <var-decl name='normal_flag' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='358' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1073952'>
         <!-- int OpenGLSurfaceEvaluator::color_flag -->
-        <var-decl name='color_flag' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='359' column='1'/>
+        <var-decl name='color_flag' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='359' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1073984'>
         <!-- int OpenGLSurfaceEvaluator::texcoord_flag -->
-        <var-decl name='texcoord_flag' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='360' column='1'/>
+        <var-decl name='texcoord_flag' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='360' column='1'/>
       </data-member>
+      <member-function access='public'>
+        <!-- void OpenGLSurfaceEvaluator::set_callback_userData(void*) -->
+        <function-decl name='set_callback_userData' mangled-name='_ZN22OpenGLSurfaceEvaluator21set_callback_userDataEPv' filepath='libnurbs/interface/glsurfeval.h' line='168' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void OpenGLSurfaceEvaluator::put_vertices_call_back(int) -->
+        <function-decl name='put_vertices_call_back' mangled-name='_ZN22OpenGLSurfaceEvaluator22put_vertices_call_backEi' filepath='libnurbs/interface/glsurfeval.h' line='153' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
       <member-function access='public' constructor='yes'>
         <!-- OpenGLSurfaceEvaluator::OpenGLSurfaceEvaluator() -->
         <function-decl name='OpenGLSurfaceEvaluator' filepath='libnurbs/interface/glsurfeval.cc' line='99' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void OpenGLSurfaceEvaluator::putCallBack(GLenum, _GLUfuncptr) -->
+        <function-decl name='putCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator11putCallBackEjPFvvE' filepath='libnurbs/interface/glsurfeval.cc' line='1190' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'typedef GLenum' -->
+          <parameter type-id='type-id-36'/>
+          <!-- parameter of type 'typedef _GLUfuncptr' -->
+          <parameter type-id='type-id-37'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::beginCallBack(GLenum, void*) -->
+        <function-decl name='beginCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator13beginCallBackEjPv' filepath='libnurbs/interface/glsurfeval.cc' line='1237' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'typedef GLenum' -->
+          <parameter type-id='type-id-36'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::endCallBack(void*) -->
+        <function-decl name='endCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator11endCallBackEPv' filepath='libnurbs/interface/glsurfeval.cc' line='1246' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::vertexCallBack(const GLfloat*, void*) -->
+        <function-decl name='vertexCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator14vertexCallBackEPKfPv' filepath='libnurbs/interface/glsurfeval.cc' line='1255' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'const GLfloat*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::normalCallBack(const GLfloat*, void*) -->
+        <function-decl name='normalCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator14normalCallBackEPKfPv' filepath='libnurbs/interface/glsurfeval.cc' line='1265' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'const GLfloat*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::colorCallBack(const GLfloat*, void*) -->
+        <function-decl name='colorCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator13colorCallBackEPKfPv' filepath='libnurbs/interface/glsurfeval.cc' line='1274' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'const GLfloat*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::texcoordCallBack(const GLfloat*, void*) -->
+        <function-decl name='texcoordCallBack' mangled-name='_ZN22OpenGLSurfaceEvaluator16texcoordCallBackEPKfPv' filepath='libnurbs/interface/glsurfeval.cc' line='1283' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'const GLfloat*' -->
+          <parameter type-id='type-id-25'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void OpenGLSurfaceEvaluator::coord2f(REAL, REAL) -->
+        <function-decl name='coord2f' mangled-name='_ZN22OpenGLSurfaceEvaluator7coord2fEff' filepath='libnurbs/interface/glsurfeval.cc' line='1106' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void OpenGLSurfaceEvaluator::point2i(long int, long int) -->
+        <function-decl name='point2i' mangled-name='_ZN22OpenGLSurfaceEvaluator7point2iEll' filepath='libnurbs/interface/glsurfeval.cc' line='1069' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void OpenGLSurfaceEvaluator::newtmeshvert(REAL, REAL) -->
+        <function-decl name='newtmeshvert' mangled-name='_ZN22OpenGLSurfaceEvaluator12newtmeshvertEff' filepath='libnurbs/interface/glsurfeval.cc' line='1160' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void OpenGLSurfaceEvaluator::newtmeshvert(long int, long int) -->
+        <function-decl name='newtmeshvert' mangled-name='_ZN22OpenGLSurfaceEvaluator12newtmeshvertEll' filepath='libnurbs/interface/glsurfeval.cc' line='1134' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void OpenGLSurfaceEvaluator::LOD_eval_list(int) -->
+        <function-decl name='LOD_eval_list' mangled-name='_ZN22OpenGLSurfaceEvaluator13LOD_eval_listEi' filepath='libnurbs/interface/glsurfeval.cc' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inMapGrid2f(int, REAL, REAL, int, REAL, REAL) -->
+        <function-decl name='inMapGrid2f' mangled-name='_ZN22OpenGLSurfaceEvaluator11inMapGrid2fEiffiff' filepath='libnurbs/interface/insurfeval.cc' line='389' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inComputeFirstPartials(REAL*, REAL*, REAL*) -->
+        <function-decl name='inComputeFirstPartials' mangled-name='_ZN22OpenGLSurfaceEvaluator22inComputeFirstPartialsEPfS0_S0_' filepath='libnurbs/interface/insurfeval.cc' line='501' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inPreEvaluate(int, REAL, REAL*) -->
+        <function-decl name='inPreEvaluate' mangled-name='_ZN22OpenGLSurfaceEvaluator13inPreEvaluateEifPf' filepath='libnurbs/interface/insurfeval.cc' line='1022' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inPreEvaluateWithDeriv(int, REAL, REAL*, REAL*) -->
+        <function-decl name='inPreEvaluateWithDeriv' mangled-name='_ZN22OpenGLSurfaceEvaluator22inPreEvaluateWithDerivEifPfS0_' filepath='libnurbs/interface/insurfeval.cc' line='1066' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inDoDomain2WithDerivs(int, REAL, REAL, REAL, REAL, int, REAL, REAL, int, REAL*, REAL*, REAL*, REAL*) -->
+        <function-decl name='inDoDomain2WithDerivs' mangled-name='_ZN22OpenGLSurfaceEvaluator21inDoDomain2WithDerivsEiffffiffiPfS0_S0_S0_' filepath='libnurbs/interface/insurfeval.cc' line='949' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inDoDomain2WithDerivsBV(int, REAL, REAL, REAL, REAL, int, REAL, REAL, int, REAL*, REAL*, REAL*, REAL*) -->
+        <function-decl name='inDoDomain2WithDerivsBV' mangled-name='_ZN22OpenGLSurfaceEvaluator23inDoDomain2WithDerivsBVEiffffiffiPfS0_S0_S0_' filepath='libnurbs/interface/insurfeval.cc' line='903' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inDoDomain2WithDerivsBU(int, REAL, REAL, REAL, REAL, int, REAL, REAL, int, REAL*, REAL*, REAL*, REAL*) -->
+        <function-decl name='inDoDomain2WithDerivsBU' mangled-name='_ZN22OpenGLSurfaceEvaluator23inDoDomain2WithDerivsBUEiffffiffiPfS0_S0_S0_' filepath='libnurbs/interface/insurfeval.cc' line='868' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inPreEvaluateBU(int, int, int, REAL, REAL*) -->
+        <function-decl name='inPreEvaluateBU' mangled-name='_ZN22OpenGLSurfaceEvaluator15inPreEvaluateBUEiiifPf' filepath='libnurbs/interface/insurfeval.cc' line='838' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inPreEvaluateBV(int, int, int, REAL, REAL*) -->
+        <function-decl name='inPreEvaluateBV' mangled-name='_ZN22OpenGLSurfaceEvaluator15inPreEvaluateBVEiiifPf' filepath='libnurbs/interface/insurfeval.cc' line='809' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inEvalULine(int, REAL, REAL*, int, REAL[3]*, REAL[3]*) -->
+        <function-decl name='inEvalULine' mangled-name='_ZN22OpenGLSurfaceEvaluator11inEvalULineEifPfiPA3_fS2_' filepath='libnurbs/interface/insurfeval.cc' line='1125' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL[3]*' -->
+          <parameter type-id='type-id-58'/>
+          <!-- parameter of type 'REAL[3]*' -->
+          <parameter type-id='type-id-58'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inEvalVLine(int, REAL, REAL*, int, REAL[3]*, REAL[3]*) -->
+        <function-decl name='inEvalVLine' mangled-name='_ZN22OpenGLSurfaceEvaluator11inEvalVLineEifPfiPA3_fS2_' filepath='libnurbs/interface/insurfeval.cc' line='1144' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL[3]*' -->
+          <parameter type-id='type-id-58'/>
+          <!-- parameter of type 'REAL[3]*' -->
+          <parameter type-id='type-id-58'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inMap2fEM(int, int, REAL, REAL, int, int, REAL, REAL, int, int, REAL*) -->
+        <function-decl name='inMap2fEM' mangled-name='_ZN22OpenGLSurfaceEvaluator9inMap2fEMEiiffiiffiiPf' filepath='libnurbs/interface/insurfeval.cc' line='1540' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inDoDomain2WithDerivsEM(surfEvalMachine*, REAL, REAL, REAL*, REAL*, REAL*) -->
+        <function-decl name='inDoDomain2WithDerivsEM' mangled-name='_ZN22OpenGLSurfaceEvaluator23inDoDomain2WithDerivsEMEP15surfEvalMachineffPfS2_S2_' filepath='libnurbs/interface/insurfeval.cc' line='1600' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'surfEvalMachine*' -->
+          <parameter type-id='type-id-59'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inDoDomain2EM(surfEvalMachine*, REAL, REAL, REAL*) -->
+        <function-decl name='inDoDomain2EM' mangled-name='_ZN22OpenGLSurfaceEvaluator13inDoDomain2EMEP15surfEvalMachineffPf' filepath='libnurbs/interface/insurfeval.cc' line='1653' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'surfEvalMachine*' -->
+          <parameter type-id='type-id-59'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inEvalVStrip(int, REAL, REAL*, int, REAL, REAL*) -->
+        <function-decl name='inEvalVStrip' mangled-name='_ZN22OpenGLSurfaceEvaluator12inEvalVStripEifPfifS0_' filepath='libnurbs/interface/insurfeval.cc' line='1355' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inEvalUStrip(int, REAL, REAL*, int, REAL, REAL*) -->
+        <function-decl name='inEvalUStrip' mangled-name='_ZN22OpenGLSurfaceEvaluator12inEvalUStripEifPfifS0_' filepath='libnurbs/interface/insurfeval.cc' line='1166' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inComputeNormal2(REAL*, REAL*, REAL*) -->
+        <function-decl name='inComputeNormal2' mangled-name='_ZN22OpenGLSurfaceEvaluator16inComputeNormal2EPfS0_S0_' filepath='libnurbs/interface/insurfeval.cc' line='518' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inDoEvalCoord2EM(REAL, REAL) -->
+        <function-decl name='inDoEvalCoord2EM' mangled-name='_ZN22OpenGLSurfaceEvaluator16inDoEvalCoord2EMEff' filepath='libnurbs/interface/insurfeval.cc' line='1702' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inBPMEvalEM(bezierPatchMesh*) -->
+        <function-decl name='inBPMEvalEM' mangled-name='_ZN22OpenGLSurfaceEvaluator11inBPMEvalEMEP15bezierPatchMesh' filepath='libnurbs/interface/insurfeval.cc' line='1826' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'bezierPatchMesh*' -->
+          <parameter type-id='type-id-54'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inBPMListEvalEM(bezierPatchMesh*) -->
+        <function-decl name='inBPMListEvalEM' mangled-name='_ZN22OpenGLSurfaceEvaluator15inBPMListEvalEMEP15bezierPatchMesh' filepath='libnurbs/interface/insurfeval.cc' line='2056' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'bezierPatchMesh*' -->
+          <parameter type-id='type-id-54'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inDoEvalCoord2(REAL, REAL, REAL*, REAL*) -->
+        <function-decl name='inDoEvalCoord2' mangled-name='_ZN22OpenGLSurfaceEvaluator14inDoEvalCoord2EffPfS0_' filepath='libnurbs/interface/insurfeval.cc' line='541' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inEvalMesh2(int, int, int, int) -->
+        <function-decl name='inEvalMesh2' mangled-name='_ZN22OpenGLSurfaceEvaluator11inEvalMesh2Eiiii' filepath='libnurbs/interface/insurfeval.cc' line='400' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inEvalCoord2f(REAL, REAL) -->
+        <function-decl name='inEvalCoord2f' mangled-name='_ZN22OpenGLSurfaceEvaluator13inEvalCoord2fEff' filepath='libnurbs/interface/insurfeval.cc' line='375' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inEvalPoint2(int, int) -->
+        <function-decl name='inEvalPoint2' mangled-name='_ZN22OpenGLSurfaceEvaluator12inEvalPoint2Eii' filepath='libnurbs/interface/insurfeval.cc' line='362' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inMap2f(int, REAL, REAL, int, int, REAL, REAL, int, int, REAL*) -->
+        <function-decl name='inMap2f' mangled-name='_ZN22OpenGLSurfaceEvaluator7inMap2fEiffiiffiiPf' filepath='libnurbs/interface/insurfeval.cc' line='444' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inBPMEval(bezierPatchMesh*) -->
+        <function-decl name='inBPMEval' mangled-name='_ZN22OpenGLSurfaceEvaluator9inBPMEvalEP15bezierPatchMesh' filepath='libnurbs/interface/insurfeval.cc' line='247' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'bezierPatchMesh*' -->
+          <parameter type-id='type-id-54'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void OpenGLSurfaceEvaluator::inBPMListEval(bezierPatchMesh*) -->
+        <function-decl name='inBPMListEval' mangled-name='_ZN22OpenGLSurfaceEvaluator13inBPMListEvalEP15bezierPatchMesh' filepath='libnurbs/interface/insurfeval.cc' line='238' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48' is-artificial='yes'/>
+          <!-- parameter of type 'bezierPatchMesh*' -->
+          <parameter type-id='type-id-54'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' destructor='yes' vtable-offset='-1'>
         <!-- OpenGLSurfaceEvaluator::~OpenGLSurfaceEvaluator(int) -->
         <function-decl name='~OpenGLSurfaceEvaluator' filepath='libnurbs/interface/glsurfeval.cc' line='162' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='9'>
         <!-- void OpenGLSurfaceEvaluator::range2f(long int, REAL*, REAL*) -->
         <function-decl name='range2f' mangled-name='_ZN22OpenGLSurfaceEvaluator7range2fElPfS0_' filepath='libnurbs/interface/glsurfeval.cc' line='258' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='10'>
         <!-- void OpenGLSurfaceEvaluator::domain2f(REAL, REAL, REAL, REAL) -->
         <function-decl name='domain2f' mangled-name='_ZN22OpenGLSurfaceEvaluator8domain2fEffff' filepath='libnurbs/interface/glsurfeval.cc' line='263' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
@@ -1161,4231 +2409,1305 @@
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='11'>
         <!-- void OpenGLSurfaceEvaluator::enable(long int) -->
         <function-decl name='enable' mangled-name='_ZN22OpenGLSurfaceEvaluator6enableEl' filepath='libnurbs/interface/glsurfeval.cc' line='185' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='12'>
         <!-- void OpenGLSurfaceEvaluator::disable(long int) -->
         <function-decl name='disable' mangled-name='_ZN22OpenGLSurfaceEvaluator7disableEl' filepath='libnurbs/interface/glsurfeval.cc' line='175' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='13'>
         <!-- void OpenGLSurfaceEvaluator::bgnmap2f(long int) -->
         <function-decl name='bgnmap2f' mangled-name='_ZN22OpenGLSurfaceEvaluator8bgnmap2fEl' filepath='libnurbs/interface/glsurfeval.cc' line='739' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='14'>
         <!-- void OpenGLSurfaceEvaluator::map2f(long int, REAL, REAL, long int, long int, REAL, REAL, long int, long int, REAL*) -->
         <function-decl name='map2f' mangled-name='_ZN22OpenGLSurfaceEvaluator5map2fElffllffllPf' filepath='libnurbs/interface/glsurfeval.cc' line='872' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='15'>
         <!-- void OpenGLSurfaceEvaluator::mapgrid2f(long int, REAL, REAL, long int, REAL, REAL) -->
         <function-decl name='mapgrid2f' mangled-name='_ZN22OpenGLSurfaceEvaluator9mapgrid2fElfflff' filepath='libnurbs/interface/glsurfeval.cc' line='195' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='16'>
         <!-- void OpenGLSurfaceEvaluator::mapmesh2f(long int, long int, long int, long int, long int) -->
         <function-decl name='mapmesh2f' mangled-name='_ZN22OpenGLSurfaceEvaluator9mapmesh2fElllll' filepath='libnurbs/interface/glsurfeval.cc' line='946' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='17'>
         <!-- void OpenGLSurfaceEvaluator::evalcoord2f(long int, REAL, REAL) -->
         <function-decl name='evalcoord2f' mangled-name='_ZN22OpenGLSurfaceEvaluator11evalcoord2fElff' filepath='libnurbs/interface/glsurfeval.cc' line='1042' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='18'>
         <!-- void OpenGLSurfaceEvaluator::evalpoint2i(long int, long int) -->
         <function-decl name='evalpoint2i' mangled-name='_ZN22OpenGLSurfaceEvaluator11evalpoint2iEll' filepath='libnurbs/interface/glsurfeval.cc' line='1059' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='19'>
         <!-- void OpenGLSurfaceEvaluator::endmap2f() -->
         <function-decl name='endmap2f' mangled-name='_ZN22OpenGLSurfaceEvaluator8endmap2fEv' filepath='libnurbs/interface/glsurfeval.cc' line='801' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='20'>
         <!-- void OpenGLSurfaceEvaluator::polymode(long int) -->
         <function-decl name='polymode' mangled-name='_ZN22OpenGLSurfaceEvaluator8polymodeEl' filepath='libnurbs/interface/glsurfeval.cc' line='219' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='21'>
         <!-- void OpenGLSurfaceEvaluator::bgnline() -->
         <function-decl name='bgnline' mangled-name='_ZN22OpenGLSurfaceEvaluator7bgnlineEv' filepath='libnurbs/interface/glsurfeval.cc' line='240' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='22'>
         <!-- void OpenGLSurfaceEvaluator::endline() -->
         <function-decl name='endline' mangled-name='_ZN22OpenGLSurfaceEvaluator7endlineEv' filepath='libnurbs/interface/glsurfeval.cc' line='249' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='23'>
         <!-- void OpenGLSurfaceEvaluator::bgnclosedline() -->
         <function-decl name='bgnclosedline' mangled-name='_ZN22OpenGLSurfaceEvaluator13bgnclosedlineEv' filepath='libnurbs/interface/glsurfeval.cc' line='268' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='24'>
         <!-- void OpenGLSurfaceEvaluator::endclosedline() -->
         <function-decl name='endclosedline' mangled-name='_ZN22OpenGLSurfaceEvaluator13endclosedlineEv' filepath='libnurbs/interface/glsurfeval.cc' line='277' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='25'>
         <!-- void OpenGLSurfaceEvaluator::bgntmesh() -->
         <function-decl name='bgntmesh' mangled-name='_ZN22OpenGLSurfaceEvaluator8bgntmeshEv' filepath='libnurbs/interface/glsurfeval.cc' line='290' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='26'>
         <!-- void OpenGLSurfaceEvaluator::swaptmesh() -->
         <function-decl name='swaptmesh' mangled-name='_ZN22OpenGLSurfaceEvaluator9swaptmeshEv' filepath='libnurbs/interface/glsurfeval.cc' line='305' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='27'>
         <!-- void OpenGLSurfaceEvaluator::endtmesh() -->
         <function-decl name='endtmesh' mangled-name='_ZN22OpenGLSurfaceEvaluator8endtmeshEv' filepath='libnurbs/interface/glsurfeval.cc' line='312' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='28'>
         <!-- void OpenGLSurfaceEvaluator::bgnqstrip() -->
         <function-decl name='bgnqstrip' mangled-name='_ZN22OpenGLSurfaceEvaluator9bgnqstripEv' filepath='libnurbs/interface/glsurfeval.cc' line='712' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='29'>
         <!-- void OpenGLSurfaceEvaluator::endqstrip() -->
         <function-decl name='endqstrip' mangled-name='_ZN22OpenGLSurfaceEvaluator9endqstripEv' filepath='libnurbs/interface/glsurfeval.cc' line='725' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='30'>
         <!-- void OpenGLSurfaceEvaluator::bgntfan() -->
         <function-decl name='bgntfan' mangled-name='_ZN22OpenGLSurfaceEvaluator7bgntfanEv' filepath='libnurbs/interface/glsurfeval.cc' line='324' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='31'>
         <!-- void OpenGLSurfaceEvaluator::endtfan() -->
         <function-decl name='endtfan' mangled-name='_ZN22OpenGLSurfaceEvaluator7endtfanEv' filepath='libnurbs/interface/glsurfeval.cc' line='334' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='32'>
         <!-- void OpenGLSurfaceEvaluator::evalUStrip(int, REAL, REAL*, int, REAL, REAL*) -->
         <function-decl name='evalUStrip' mangled-name='_ZN22OpenGLSurfaceEvaluator10evalUStripEifPfifS0_' filepath='libnurbs/interface/glsurfeval.cc' line='343' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' vtable-offset='33'>
         <!-- void OpenGLSurfaceEvaluator::evalVStrip(int, REAL, REAL*, int, REAL, REAL*) -->
         <function-decl name='evalVStrip' mangled-name='_ZN22OpenGLSurfaceEvaluator10evalVStripEifPfifS0_' filepath='libnurbs/interface/glsurfeval.cc' line='530' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='34'>
         <!-- void OpenGLSurfaceEvaluator::inDoEvalCoord2NOGE(REAL, REAL, REAL*, REAL*) -->
         <function-decl name='inDoEvalCoord2NOGE' mangled-name='_ZN22OpenGLSurfaceEvaluator18inDoEvalCoord2NOGEEffPfS0_' filepath='libnurbs/interface/glsurfeval.h' line='283' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='35'>
         <!-- void OpenGLSurfaceEvaluator::inDoEvalCoord2NOGE_BU(REAL, REAL, REAL*, REAL*) -->
         <function-decl name='inDoEvalCoord2NOGE_BU' mangled-name='_ZN22OpenGLSurfaceEvaluator21inDoEvalCoord2NOGE_BUEffPfS0_' filepath='libnurbs/interface/glsurfeval.h' line='342' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='36'>
         <!-- void OpenGLSurfaceEvaluator::inDoEvalCoord2NOGE_BV(REAL, REAL, REAL*, REAL*) -->
         <function-decl name='inDoEvalCoord2NOGE_BV' mangled-name='_ZN22OpenGLSurfaceEvaluator21inDoEvalCoord2NOGE_BVEffPfS0_' filepath='libnurbs/interface/glsurfeval.h' line='339' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='37'>
         <!-- void OpenGLSurfaceEvaluator::inPreEvaluateBV_intfac(REAL) -->
         <function-decl name='inPreEvaluateBV_intfac' mangled-name='_ZN22OpenGLSurfaceEvaluator22inPreEvaluateBV_intfacEf' filepath='libnurbs/interface/glsurfeval.h' line='316' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='38'>
         <!-- void OpenGLSurfaceEvaluator::inPreEvaluateBU_intfac(REAL) -->
         <function-decl name='inPreEvaluateBU_intfac' mangled-name='_ZN22OpenGLSurfaceEvaluator22inPreEvaluateBU_intfacEf' filepath='libnurbs/interface/glsurfeval.h' line='321' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'OpenGLSurfaceEvaluator*' -->
-          <parameter type-id='type-id-55' is-artificial='yes'/>
+          <parameter type-id='type-id-48' is-artificial='yes'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- GLUnurbs* -->
-    <pointer-type-def type-id='type-id-42' size-in-bits='64' id='type-id-47'/>
-    <!-- GLUnurbs* const -->
-    <qualified-type-def type-id='type-id-47' const='yes' id='type-id-56'/>
-    <!-- OpenGLSurfaceEvaluator* -->
-    <pointer-type-def type-id='type-id-46' size-in-bits='64' id='type-id-55'/>
-    <!-- OpenGLSurfaceEvaluator* const -->
-    <qualified-type-def type-id='type-id-55' const='yes' id='type-id-57'/>
-    <!-- float* -->
-    <pointer-type-def type-id='type-id-28' size-in-bits='64' id='type-id-58'/>
-    <!-- void gluDeleteNurbsRenderer(GLUnurbs*) -->
-    <function-decl name='gluDeleteNurbsRenderer' mangled-name='gluDeleteNurbsRenderer' filepath='libnurbs/interface/glinterface.cc' line='75' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluDeleteNurbsRenderer'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluNurbsCallbackDataEXT(GLUnurbs*, void*) -->
-    <function-decl name='gluNurbsCallbackDataEXT' mangled-name='gluNurbsCallbackDataEXT' filepath='libnurbs/interface/glinterface.cc' line='459' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNurbsCallbackDataEXT'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='459' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25' name='userData' filepath='libnurbs/interface/glinterface.cc' line='459' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluNurbsCallbackData(GLUnurbs*, void*) -->
-    <function-decl name='gluNurbsCallbackData' mangled-name='gluNurbsCallbackData' filepath='libnurbs/interface/glinterface.cc' line='466' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNurbsCallbackData'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='459' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25' name='userData' filepath='libnurbs/interface/glinterface.cc' line='459' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluNurbsCallback(GLUnurbs*, GLenum, _GLUfuncptr) -->
-    <function-decl name='gluNurbsCallback' mangled-name='gluNurbsCallback' filepath='libnurbs/interface/glinterface.cc' line='430' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNurbsCallback'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='430' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='which' filepath='libnurbs/interface/glinterface.cc' line='430' column='1'/>
-      <!-- parameter of type 'typedef _GLUfuncptr' -->
-      <parameter type-id='type-id-60' name='fn' filepath='libnurbs/interface/glinterface.cc' line='430' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluGetNurbsProperty(GLUnurbs*, GLenum, GLfloat*) -->
-    <function-decl name='gluGetNurbsProperty' mangled-name='gluGetNurbsProperty' filepath='libnurbs/interface/glinterface.cc' line='359' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluGetNurbsProperty'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='359' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='property' filepath='libnurbs/interface/glinterface.cc' line='359' column='1'/>
-      <!-- parameter of type 'GLfloat*' -->
-      <parameter type-id='type-id-61' name='value' filepath='libnurbs/interface/glinterface.cc' line='359' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluNurbsProperty(GLUnurbs*, GLenum, GLfloat) -->
-    <function-decl name='gluNurbsProperty' mangled-name='gluNurbsProperty' filepath='libnurbs/interface/glinterface.cc' line='243' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNurbsProperty'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='243' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='property' filepath='libnurbs/interface/glinterface.cc' line='243' column='1'/>
-      <!-- parameter of type 'typedef GLfloat' -->
-      <parameter type-id='type-id-32' name='value' filepath='libnurbs/interface/glinterface.cc' line='243' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluLoadSamplingMatrices(GLUnurbs*, const GLfloat*, const GLfloat*, const GLint*) -->
-    <function-decl name='gluLoadSamplingMatrices' mangled-name='gluLoadSamplingMatrices' filepath='libnurbs/interface/glinterface.cc' line='235' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluLoadSamplingMatrices'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='235' column='1'/>
-      <!-- parameter of type 'const GLfloat*' -->
-      <parameter type-id='type-id-34' name='modelMatrix' filepath='libnurbs/interface/glinterface.cc' line='235' column='1'/>
-      <!-- parameter of type 'const GLfloat*' -->
-      <parameter type-id='type-id-34' name='projMatrix' filepath='libnurbs/interface/glinterface.cc' line='236' column='1'/>
-      <!-- parameter of type 'const GLint*' -->
-      <parameter type-id='type-id-62' name='viewport' filepath='libnurbs/interface/glinterface.cc' line='237' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluNurbsSurface(GLUnurbs*, GLint, GLfloat*, GLint, GLfloat*, GLint, GLint, GLfloat*, GLint, GLint, GLenum) -->
-    <function-decl name='gluNurbsSurface' mangled-name='gluNurbsSurface' filepath='libnurbs/interface/glinterface.cc' line='199' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNurbsSurface'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='199' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='sknot_count' filepath='libnurbs/interface/glinterface.cc' line='199' column='1'/>
-      <!-- parameter of type 'GLfloat*' -->
-      <parameter type-id='type-id-61' name='sknot' filepath='libnurbs/interface/glinterface.cc' line='199' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='tknot_count' filepath='libnurbs/interface/glinterface.cc' line='200' column='1'/>
-      <!-- parameter of type 'GLfloat*' -->
-      <parameter type-id='type-id-61' name='tknot' filepath='libnurbs/interface/glinterface.cc' line='200' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='s_stride' filepath='libnurbs/interface/glinterface.cc' line='201' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='t_stride' filepath='libnurbs/interface/glinterface.cc' line='201' column='1'/>
-      <!-- parameter of type 'GLfloat*' -->
-      <parameter type-id='type-id-61' name='ctlarray' filepath='libnurbs/interface/glinterface.cc' line='202' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='sorder' filepath='libnurbs/interface/glinterface.cc' line='202' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='torder' filepath='libnurbs/interface/glinterface.cc' line='202' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='type' filepath='libnurbs/interface/glinterface.cc' line='203' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluNurbsCurve(GLUnurbs*, GLint, float*, GLint, float*, GLint, GLenum) -->
-    <function-decl name='gluNurbsCurve' mangled-name='gluNurbsCurve' filepath='libnurbs/interface/glinterface.cc' line='173' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNurbsCurve'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='173' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='nknots' filepath='libnurbs/interface/glinterface.cc' line='173' column='1'/>
-      <!-- parameter of type 'float*' -->
-      <parameter type-id='type-id-58' name='knot' filepath='libnurbs/interface/glinterface.cc' line='173' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='stride' filepath='libnurbs/interface/glinterface.cc' line='173' column='1'/>
-      <!-- parameter of type 'float*' -->
-      <parameter type-id='type-id-58' name='ctlarray' filepath='libnurbs/interface/glinterface.cc' line='174' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='order' filepath='libnurbs/interface/glinterface.cc' line='174' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='type' filepath='libnurbs/interface/glinterface.cc' line='174' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluPwlCurve(GLUnurbs*, GLint, float*, GLint, GLenum) -->
-    <function-decl name='gluPwlCurve' mangled-name='gluPwlCurve' filepath='libnurbs/interface/glinterface.cc' line='150' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluPwlCurve'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='150' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='count' filepath='libnurbs/interface/glinterface.cc' line='150' column='1'/>
-      <!-- parameter of type 'float*' -->
-      <parameter type-id='type-id-58' name='array' filepath='libnurbs/interface/glinterface.cc' line='150' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='stride' filepath='libnurbs/interface/glinterface.cc' line='151' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='type' filepath='libnurbs/interface/glinterface.cc' line='151' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluEndTrim(GLUnurbs*) -->
-    <function-decl name='gluEndTrim' mangled-name='gluEndTrim' filepath='libnurbs/interface/glinterface.cc' line='141' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluEndTrim'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluBeginTrim(GLUnurbs*) -->
-    <function-decl name='gluBeginTrim' mangled-name='gluBeginTrim' filepath='libnurbs/interface/glinterface.cc' line='131' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBeginTrim'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluEndSurface(GLUnurbs*) -->
-    <function-decl name='gluEndSurface' mangled-name='gluEndSurface' filepath='libnurbs/interface/glinterface.cc' line='111' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluEndSurface'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluEndCurve(GLUnurbs*) -->
-    <function-decl name='gluEndCurve' mangled-name='gluEndCurve' filepath='libnurbs/interface/glinterface.cc' line='105' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluEndCurve'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluBeginCurve(GLUnurbs*) -->
-    <function-decl name='gluBeginCurve' mangled-name='gluBeginCurve' filepath='libnurbs/interface/glinterface.cc' line='99' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBeginCurve'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluBeginSurface(GLUnurbs*) -->
-    <function-decl name='gluBeginSurface' mangled-name='gluBeginSurface' filepath='libnurbs/interface/glinterface.cc' line='89' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBeginSurface'>
-      <!-- parameter of type 'GLUnurbs*' -->
-      <parameter type-id='type-id-47' name='r' filepath='libnurbs/interface/glinterface.cc' line='75' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- GLUnurbs* gluNewNurbsRenderer() -->
-    <function-decl name='gluNewNurbsRenderer' mangled-name='gluNewNurbsRenderer' filepath='libnurbs/interface/glinterface.cc' line='66' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNewNurbsRenderer'>
-      <!-- GLUnurbs* -->
-      <return type-id='type-id-47'/>
-    </function-decl>
-    <!-- GLfloat* -->
-    <pointer-type-def type-id='type-id-32' size-in-bits='64' id='type-id-61'/>
-    <!-- GLint[2] -->
-    <array-type-def dimensions='1' type-id='type-id-63' size-in-bits='64' id='type-id-50'>
-      <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
-    </array-type-def>
-    <!-- REAL[40][4] -->
-    <array-type-def dimensions='2' type-id='type-id-1' size-in-bits='5120' id='type-id-52'>
-      <!-- <anonymous range>[40] -->
-      <subrange length='40' type-id='type-id-3' id='type-id-6'/>
-      <!-- <anonymous range>[4] -->
-      <subrange length='4' type-id='type-id-3' id='type-id-65'/>
-    </array-type-def>
-    <!-- REAL[6400] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='204800' id='type-id-53'>
-      <!-- <anonymous range>[6400] -->
-      <subrange length='6400' type-id='type-id-3' id='type-id-66'/>
-    </array-type-def>
-    <!-- StoredVertex*[3] -->
-    <array-type-def dimensions='1' type-id='type-id-67' size-in-bits='192' id='type-id-49'>
-      <!-- <anonymous range>[3] -->
-      <subrange length='3' type-id='type-id-3' id='type-id-68'/>
-    </array-type-def>
-    <!-- bezierPatchMesh* -->
-    <pointer-type-def type-id='type-id-69' size-in-bits='64' id='type-id-51'/>
-    <!-- struct BasicSurfaceEvaluator -->
-    <class-decl name='BasicSurfaceEvaluator' size-in-bits='64' is-struct='yes' visibility='default' filepath='libnurbs/internals/basicsurfeval.h' line='43' column='1' id='type-id-48'>
-      <!-- class CachingEvaluator -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-7'/>
-      <member-function access='public' destructor='yes' vtable-offset='-1'>
-        <!-- BasicSurfaceEvaluator::~BasicSurfaceEvaluator(int) -->
-        <function-decl name='~BasicSurfaceEvaluator' filepath='libnurbs/internals/basicsurfeval.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='9'>
-        <!-- void BasicSurfaceEvaluator::range2f(long int, REAL*, REAL*) -->
-        <function-decl name='range2f' mangled-name='_ZN21BasicSurfaceEvaluator7range2fElPfS0_' filepath='libnurbs/internals/basicsurfeval.cc' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='10'>
-        <!-- void BasicSurfaceEvaluator::domain2f(REAL, REAL, REAL, REAL) -->
-        <function-decl name='domain2f' mangled-name='_ZN21BasicSurfaceEvaluator8domain2fEffff' filepath='libnurbs/internals/basicsurfeval.cc' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='11'>
-        <!-- void BasicSurfaceEvaluator::enable(long int) -->
-        <function-decl name='enable' mangled-name='_ZN21BasicSurfaceEvaluator6enableEl' filepath='libnurbs/internals/basicsurfeval.cc' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='12'>
-        <!-- void BasicSurfaceEvaluator::disable(long int) -->
-        <function-decl name='disable' mangled-name='_ZN21BasicSurfaceEvaluator7disableEl' filepath='libnurbs/internals/basicsurfeval.cc' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='13'>
-        <!-- void BasicSurfaceEvaluator::bgnmap2f(long int) -->
-        <function-decl name='bgnmap2f' mangled-name='_ZN21BasicSurfaceEvaluator8bgnmap2fEl' filepath='libnurbs/internals/basicsurfeval.cc' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='14'>
-        <!-- void BasicSurfaceEvaluator::map2f(long int, REAL, REAL, long int, long int, REAL, REAL, long int, long int, REAL*) -->
-        <function-decl name='map2f' mangled-name='_ZN21BasicSurfaceEvaluator5map2fElffllffllPf' filepath='libnurbs/internals/basicsurfeval.cc' line='106' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='15'>
-        <!-- void BasicSurfaceEvaluator::mapgrid2f(long int, REAL, REAL, long int, REAL, REAL) -->
-        <function-decl name='mapgrid2f' mangled-name='_ZN21BasicSurfaceEvaluator9mapgrid2fElfflff' filepath='libnurbs/internals/basicsurfeval.cc' line='116' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='16'>
-        <!-- void BasicSurfaceEvaluator::mapmesh2f(long int, long int, long int, long int, long int) -->
-        <function-decl name='mapmesh2f' mangled-name='_ZN21BasicSurfaceEvaluator9mapmesh2fElllll' filepath='libnurbs/internals/basicsurfeval.cc' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='17'>
-        <!-- void BasicSurfaceEvaluator::evalcoord2f(long int, REAL, REAL) -->
-        <function-decl name='evalcoord2f' mangled-name='_ZN21BasicSurfaceEvaluator11evalcoord2fElff' filepath='libnurbs/internals/basicsurfeval.cc' line='132' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='18'>
-        <!-- void BasicSurfaceEvaluator::evalpoint2i(long int, long int) -->
-        <function-decl name='evalpoint2i' mangled-name='_ZN21BasicSurfaceEvaluator11evalpoint2iEll' filepath='libnurbs/internals/basicsurfeval.cc' line='140' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='19'>
-        <!-- void BasicSurfaceEvaluator::endmap2f() -->
-        <function-decl name='endmap2f' mangled-name='_ZN21BasicSurfaceEvaluator8endmap2fEv' filepath='libnurbs/internals/basicsurfeval.cc' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='20'>
-        <!-- void BasicSurfaceEvaluator::polymode(long int) -->
-        <function-decl name='polymode' mangled-name='_ZN21BasicSurfaceEvaluator8polymodeEl' filepath='libnurbs/internals/basicsurfeval.cc' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='21'>
-        <!-- void BasicSurfaceEvaluator::bgnline() -->
-        <function-decl name='bgnline' mangled-name='_ZN21BasicSurfaceEvaluator7bgnlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='148' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='22'>
-        <!-- void BasicSurfaceEvaluator::endline() -->
-        <function-decl name='endline' mangled-name='_ZN21BasicSurfaceEvaluator7endlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='156' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='23'>
-        <!-- void BasicSurfaceEvaluator::bgnclosedline() -->
-        <function-decl name='bgnclosedline' mangled-name='_ZN21BasicSurfaceEvaluator13bgnclosedlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='164' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='24'>
-        <!-- void BasicSurfaceEvaluator::endclosedline() -->
-        <function-decl name='endclosedline' mangled-name='_ZN21BasicSurfaceEvaluator13endclosedlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='172' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='25'>
-        <!-- void BasicSurfaceEvaluator::bgntmesh() -->
-        <function-decl name='bgntmesh' mangled-name='_ZN21BasicSurfaceEvaluator8bgntmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='194' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='26'>
-        <!-- void BasicSurfaceEvaluator::swaptmesh() -->
-        <function-decl name='swaptmesh' mangled-name='_ZN21BasicSurfaceEvaluator9swaptmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='202' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='27'>
-        <!-- void BasicSurfaceEvaluator::endtmesh() -->
-        <function-decl name='endtmesh' mangled-name='_ZN21BasicSurfaceEvaluator8endtmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='210' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='28'>
-        <!-- void BasicSurfaceEvaluator::bgnqstrip() -->
-        <function-decl name='bgnqstrip' mangled-name='_ZN21BasicSurfaceEvaluator9bgnqstripEv' filepath='libnurbs/internals/basicsurfeval.cc' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='29'>
-        <!-- void BasicSurfaceEvaluator::endqstrip() -->
-        <function-decl name='endqstrip' mangled-name='_ZN21BasicSurfaceEvaluator9endqstripEv' filepath='libnurbs/internals/basicsurfeval.cc' line='226' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='30'>
-        <!-- void BasicSurfaceEvaluator::bgntfan() -->
-        <function-decl name='bgntfan' mangled-name='_ZN21BasicSurfaceEvaluator7bgntfanEv' filepath='libnurbs/internals/basicsurfeval.cc' line='180' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='31'>
-        <!-- void BasicSurfaceEvaluator::endtfan() -->
-        <function-decl name='endtfan' mangled-name='_ZN21BasicSurfaceEvaluator7endtfanEv' filepath='libnurbs/internals/basicsurfeval.cc' line='188' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='32'>
-        <!-- void BasicSurfaceEvaluator::evalUStrip(int, REAL, REAL*, int, REAL, REAL*) -->
-        <function-decl name='evalUStrip' mangled-name='_ZN21BasicSurfaceEvaluator10evalUStripEifPfifS0_' filepath='libnurbs/internals/basicsurfeval.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='33'>
-        <!-- void BasicSurfaceEvaluator::evalVStrip(int, REAL, REAL*, int, REAL, REAL*) -->
-        <function-decl name='evalVStrip' mangled-name='_ZN21BasicSurfaceEvaluator10evalVStripEifPfifS0_' filepath='libnurbs/internals/basicsurfeval.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='34'>
-        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE(REAL, REAL, REAL*, REAL*) -->
-        <function-decl name='inDoEvalCoord2NOGE' mangled-name='_ZN21BasicSurfaceEvaluator18inDoEvalCoord2NOGEEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='35'>
-        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE_BU(REAL, REAL, REAL*, REAL*) -->
-        <function-decl name='inDoEvalCoord2NOGE_BU' mangled-name='_ZN21BasicSurfaceEvaluator21inDoEvalCoord2NOGE_BUEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='36'>
-        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE_BV(REAL, REAL, REAL*, REAL*) -->
-        <function-decl name='inDoEvalCoord2NOGE_BV' mangled-name='_ZN21BasicSurfaceEvaluator21inDoEvalCoord2NOGE_BVEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='37'>
-        <!-- void BasicSurfaceEvaluator::inPreEvaluateBV_intfac(REAL) -->
-        <function-decl name='inPreEvaluateBV_intfac' mangled-name='_ZN21BasicSurfaceEvaluator22inPreEvaluateBV_intfacEf' filepath='libnurbs/internals/basicsurfeval.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='38'>
-        <!-- void BasicSurfaceEvaluator::inPreEvaluateBU_intfac(REAL) -->
-        <function-decl name='inPreEvaluateBU_intfac' mangled-name='_ZN21BasicSurfaceEvaluator22inPreEvaluateBU_intfacEf' filepath='libnurbs/internals/basicsurfeval.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class NurbsTessellator -->
-    <class-decl name='NurbsTessellator' size-in-bits='47616' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='53' column='1' id='type-id-43'>
-      <data-member access='protected' layout-offset-in-bits='64'>
-        <!-- Renderhints NurbsTessellator::renderhints -->
-        <var-decl name='renderhints' type-id='type-id-71' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='104' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='320'>
-        <!-- Maplist NurbsTessellator::maplist -->
-        <var-decl name='maplist' type-id='type-id-72' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='105' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='3008'>
-        <!-- Backend NurbsTessellator::backend -->
-        <var-decl name='backend' type-id='type-id-73' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='106' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='3648'>
-        <!-- Subdivider NurbsTessellator::subdivider -->
-        <var-decl name='subdivider' type-id='type-id-74' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='134' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='24064'>
-        <!-- JumpBuffer* NurbsTessellator::jumpbuffer -->
-        <var-decl name='jumpbuffer' type-id='type-id-75' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='135' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='24128'>
-        <!-- Pool NurbsTessellator::o_pwlcurvePool -->
-        <var-decl name='o_pwlcurvePool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='136' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='26624'>
-        <!-- Pool NurbsTessellator::o_nurbscurvePool -->
-        <var-decl name='o_nurbscurvePool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='137' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='29120'>
-        <!-- Pool NurbsTessellator::o_curvePool -->
-        <var-decl name='o_curvePool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='138' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='31616'>
-        <!-- Pool NurbsTessellator::o_trimPool -->
-        <var-decl name='o_trimPool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='139' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='34112'>
-        <!-- Pool NurbsTessellator::o_surfacePool -->
-        <var-decl name='o_surfacePool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='140' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='36608'>
-        <!-- Pool NurbsTessellator::o_nurbssurfacePool -->
-        <var-decl name='o_nurbssurfacePool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='141' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='39104'>
-        <!-- Pool NurbsTessellator::propertyPool -->
-        <var-decl name='propertyPool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='142' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='41600'>
-        <!-- Pool NurbsTessellator::quiltPool -->
-        <var-decl name='quiltPool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='144' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='44096'>
-        <!-- TrimVertexPool NurbsTessellator::extTrimVertexPool -->
-        <var-decl name='extTrimVertexPool' type-id='type-id-77' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='146' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='46720'>
-        <!-- int NurbsTessellator::inSurface -->
-        <var-decl name='inSurface' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='148' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='46752'>
-        <!-- int NurbsTessellator::inCurve -->
-        <var-decl name='inCurve' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='149' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='46784'>
-        <!-- int NurbsTessellator::inTrim -->
-        <var-decl name='inTrim' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='150' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='46816'>
-        <!-- int NurbsTessellator::isCurveModified -->
-        <var-decl name='isCurveModified' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='151' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='46848'>
-        <!-- int NurbsTessellator::isTrimModified -->
-        <var-decl name='isTrimModified' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='152' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='46880'>
-        <!-- int NurbsTessellator::isSurfaceModified -->
-        <var-decl name='isSurfaceModified' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='153' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='46912'>
-        <!-- int NurbsTessellator::isDataValid -->
-        <var-decl name='isDataValid' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='154' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='46944'>
-        <!-- int NurbsTessellator::numTrims -->
-        <var-decl name='numTrims' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='155' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='46976'>
-        <!-- int NurbsTessellator::playBack -->
-        <var-decl name='playBack' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='156' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='47040'>
-        <!-- O_trim** NurbsTessellator::nextTrim -->
-        <var-decl name='nextTrim' type-id='type-id-78' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='158' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='47104'>
-        <!-- O_curve** NurbsTessellator::nextCurve -->
-        <var-decl name='nextCurve' type-id='type-id-79' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='159' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='47168'>
-        <!-- O_nurbscurve** NurbsTessellator::nextNurbscurve -->
-        <var-decl name='nextNurbscurve' type-id='type-id-80' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='160' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='47232'>
-        <!-- O_pwlcurve** NurbsTessellator::nextPwlcurve -->
-        <var-decl name='nextPwlcurve' type-id='type-id-81' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='161' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='47296'>
-        <!-- O_nurbssurface** NurbsTessellator::nextNurbssurface -->
-        <var-decl name='nextNurbssurface' type-id='type-id-82' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='162' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='47360'>
-        <!-- O_surface* NurbsTessellator::currentSurface -->
-        <var-decl name='currentSurface' type-id='type-id-83' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='164' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='47424'>
-        <!-- O_trim* NurbsTessellator::currentTrim -->
-        <var-decl name='currentTrim' type-id='type-id-84' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='165' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='47488'>
-        <!-- O_curve* NurbsTessellator::currentCurve -->
-        <var-decl name='currentCurve' type-id='type-id-85' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='166' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='47552'>
-        <!-- DisplayList* NurbsTessellator::dl -->
-        <var-decl name='dl' type-id='type-id-86' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='168' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- NurbsTessellator::NurbsTessellator(BasicCurveEvaluator&, BasicSurfaceEvaluator&) -->
-        <function-decl name='NurbsTessellator' filepath='libnurbs/internals/nurbsinterfac.cc' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
-          <!-- parameter of type 'BasicCurveEvaluator&' -->
-          <parameter type-id='type-id-88'/>
-          <!-- parameter of type 'BasicSurfaceEvaluator&' -->
-          <parameter type-id='type-id-89'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes' vtable-offset='-1'>
-        <!-- NurbsTessellator::~NurbsTessellator(int) -->
-        <function-decl name='~NurbsTessellator' filepath='libnurbs/internals/nurbsinterfac.cc' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='2'>
-        <!-- void NurbsTessellator::bgnrender() -->
-        <function-decl name='bgnrender' mangled-name='_ZN16NurbsTessellator9bgnrenderEv' filepath='libnurbs/internals/nurbstess.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='3'>
-        <!-- void NurbsTessellator::endrender() -->
-        <function-decl name='endrender' mangled-name='_ZN16NurbsTessellator9endrenderEv' filepath='libnurbs/internals/nurbstess.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='4'>
-        <!-- void NurbsTessellator::makeobj(int) -->
-        <function-decl name='makeobj' mangled-name='_ZN16NurbsTessellator7makeobjEi' filepath='libnurbs/internals/nurbstess.h' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='5'>
-        <!-- void NurbsTessellator::closeobj() -->
-        <function-decl name='closeobj' mangled-name='_ZN16NurbsTessellator8closeobjEv' filepath='libnurbs/internals/nurbstess.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='6'>
-        <!-- void NurbsTessellator::errorHandler(int) -->
-        <function-decl name='errorHandler' mangled-name='_ZN16NurbsTessellator12errorHandlerEi' filepath='libnurbs/internals/nurbstess.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- const GLint* -->
-    <pointer-type-def type-id='type-id-90' size-in-bits='64' id='type-id-62'/>
-    <!-- typedef unsigned char GLboolean -->
-    <typedef-decl name='GLboolean' type-id='type-id-91' filepath='../../../include/GL/gl.h' line='150' column='1' id='type-id-45'/>
-    <!-- typedef unsigned int GLenum -->
-    <typedef-decl name='GLenum' type-id='type-id-92' filepath='../../../include/GL/gl.h' line='149' column='1' id='type-id-59'/>
-    <!-- typedef int GLint -->
-    <typedef-decl name='GLint' type-id='type-id-11' filepath='../../../include/GL/gl.h' line='155' column='1' id='type-id-63'/>
-    <!-- typedef void ()* _GLUfuncptr -->
-    <typedef-decl name='_GLUfuncptr' type-id='type-id-20' filepath='../../../include/GL/glu.h' line='287' column='1' id='type-id-60'/>
-    <!-- typedef void (typedef GLenum)* errorCallbackType -->
-    <typedef-decl name='errorCallbackType' type-id='type-id-19' filepath='libnurbs/interface/glrenderer.h' line='46' column='1' id='type-id-44'/>
-    <!-- typedef surfEvalMachine surfEvalMachine -->
-    <typedef-decl name='surfEvalMachine' type-id='type-id-93' filepath='libnurbs/interface/glsurfeval.h' line='80' column='1' id='type-id-54'/>
-    <!-- BasicCurveEvaluator& -->
-    <reference-type-def kind='lvalue' type-id='type-id-13' size-in-bits='64' id='type-id-88'/>
-    <!-- BasicSurfaceEvaluator& -->
-    <reference-type-def kind='lvalue' type-id='type-id-48' size-in-bits='64' id='type-id-89'/>
-    <!-- BasicSurfaceEvaluator* -->
-    <pointer-type-def type-id='type-id-48' size-in-bits='64' id='type-id-70'/>
-    <!-- DisplayList* -->
-    <pointer-type-def type-id='type-id-94' size-in-bits='64' id='type-id-86'/>
-    <!-- JumpBuffer* -->
-    <pointer-type-def type-id='type-id-95' size-in-bits='64' id='type-id-75'/>
-    <!-- NurbsTessellator* -->
-    <pointer-type-def type-id='type-id-43' size-in-bits='64' id='type-id-87'/>
-    <!-- O_curve* -->
-    <pointer-type-def type-id='type-id-96' size-in-bits='64' id='type-id-85'/>
-    <!-- O_curve** -->
-    <pointer-type-def type-id='type-id-85' size-in-bits='64' id='type-id-79'/>
-    <!-- O_nurbscurve** -->
-    <pointer-type-def type-id='type-id-97' size-in-bits='64' id='type-id-80'/>
-    <!-- O_nurbssurface** -->
-    <pointer-type-def type-id='type-id-98' size-in-bits='64' id='type-id-82'/>
-    <!-- O_pwlcurve** -->
-    <pointer-type-def type-id='type-id-99' size-in-bits='64' id='type-id-81'/>
-    <!-- O_surface* -->
-    <pointer-type-def type-id='type-id-100' size-in-bits='64' id='type-id-83'/>
-    <!-- O_trim* -->
-    <pointer-type-def type-id='type-id-101' size-in-bits='64' id='type-id-84'/>
-    <!-- O_trim** -->
-    <pointer-type-def type-id='type-id-84' size-in-bits='64' id='type-id-78'/>
-    <!-- StoredVertex* -->
-    <pointer-type-def type-id='type-id-102' size-in-bits='64' id='type-id-67'/>
-    <!-- struct Backend -->
-    <class-decl name='Backend' size-in-bits='640' is-struct='yes' visibility='default' filepath='libnurbs/internals/backend.h' line='46' column='1' id='type-id-73'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- BasicCurveEvaluator& Backend::curveEvaluator -->
-        <var-decl name='curveEvaluator' type-id='type-id-103' visibility='default' filepath='libnurbs/internals/backend.h' line='48' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- BasicSurfaceEvaluator& Backend::surfaceEvaluator -->
-        <var-decl name='surfaceEvaluator' type-id='type-id-104' visibility='default' filepath='libnurbs/internals/backend.h' line='49' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- int Backend::wireframetris -->
-        <var-decl name='wireframetris' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/backend.h' line='105' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='160'>
-        <!-- int Backend::wireframequads -->
-        <var-decl name='wireframequads' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/backend.h' line='106' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='192'>
-        <!-- int Backend::npts -->
-        <var-decl name='npts' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/backend.h' line='107' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='224'>
-        <!-- REAL Backend::mesh[3][4] -->
-        <var-decl name='mesh' type-id='type-id-105' visibility='default' filepath='libnurbs/internals/backend.h' line='108' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='608'>
-        <!-- int Backend::meshindex -->
-        <var-decl name='meshindex' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/backend.h' line='109' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Backend::Backend(BasicCurveEvaluator&, BasicSurfaceEvaluator&) -->
-        <function-decl name='Backend' filepath='libnurbs/internals/backend.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Backend*' -->
-          <parameter type-id='type-id-106' is-artificial='yes'/>
-          <!-- parameter of type 'BasicCurveEvaluator&' -->
-          <parameter type-id='type-id-88'/>
-          <!-- parameter of type 'BasicSurfaceEvaluator&' -->
-          <parameter type-id='type-id-89'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Maplist -->
-    <class-decl name='Maplist' size-in-bits='2688' visibility='default' filepath='libnurbs/internals/maplist.h' line='46' column='1' id='type-id-72'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Pool Maplist::mapdescPool -->
-        <var-decl name='mapdescPool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/maplist.h' line='58' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2496'>
-        <!-- Mapdesc* Maplist::maps -->
-        <var-decl name='maps' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/maplist.h' line='59' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2560'>
-        <!-- Mapdesc** Maplist::lastmap -->
-        <var-decl name='lastmap' type-id='type-id-108' visibility='default' filepath='libnurbs/internals/maplist.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2624'>
-        <!-- Backend& Maplist::backend -->
-        <var-decl name='backend' type-id='type-id-109' visibility='default' filepath='libnurbs/internals/maplist.h' line='61' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Maplist::Maplist(Backend&) -->
-        <function-decl name='Maplist' filepath='libnurbs/internals/maplist.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Maplist*' -->
-          <parameter type-id='type-id-110' is-artificial='yes'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-111'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Pool -->
-    <class-decl name='Pool' size-in-bits='2496' visibility='default' filepath='libnurbs/internals/bufpool.h' line='50' column='1' id='type-id-76'>
-      <member-type access='protected'>
-        <!-- enum Pool::Magic -->
-        <enum-decl name='Magic' filepath='libnurbs/internals/bufpool.h' line='70' column='1' id='type-id-112'>
-          <underlying-type type-id='type-id-9'/>
-          <enumerator name='is_allocated' value='62369'/>
-          <enumerator name='is_free' value='61858'/>
-        </enum-decl>
-      </member-type>
-      <data-member access='protected' layout-offset-in-bits='0'>
-        <!-- Buffer* Pool::freelist -->
-        <var-decl name='freelist' type-id='type-id-113' visibility='default' filepath='libnurbs/internals/bufpool.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='64'>
-        <!-- char* Pool::blocklist[32] -->
-        <var-decl name='blocklist' type-id='type-id-114' visibility='default' filepath='libnurbs/internals/bufpool.h' line='63' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2112'>
-        <!-- int Pool::nextblock -->
-        <var-decl name='nextblock' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/bufpool.h' line='64' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2176'>
-        <!-- char* Pool::curblock -->
-        <var-decl name='curblock' type-id='type-id-115' visibility='default' filepath='libnurbs/internals/bufpool.h' line='65' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2240'>
-        <!-- int Pool::buffersize -->
-        <var-decl name='buffersize' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/bufpool.h' line='66' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2272'>
-        <!-- int Pool::nextsize -->
-        <var-decl name='nextsize' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/bufpool.h' line='67' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2304'>
-        <!-- int Pool::nextfree -->
-        <var-decl name='nextfree' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/bufpool.h' line='68' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2336'>
-        <!-- int Pool::initsize -->
-        <var-decl name='initsize' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/bufpool.h' line='69' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2368'>
-        <!-- const char* Pool::name -->
-        <var-decl name='name' type-id='type-id-116' visibility='default' filepath='libnurbs/internals/bufpool.h' line='71' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2432'>
-        <!-- Pool::Magic Pool::magic -->
-        <var-decl name='magic' type-id='type-id-112' visibility='default' filepath='libnurbs/internals/bufpool.h' line='72' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-117' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-116'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-117' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct Renderhints -->
-    <class-decl name='Renderhints' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/renderhints.h' line='41' column='1' id='type-id-71'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- REAL Renderhints::display_method -->
-        <var-decl name='display_method' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/renderhints.h' line='49' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- REAL Renderhints::errorchecking -->
-        <var-decl name='errorchecking' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/renderhints.h' line='50' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- REAL Renderhints::subdivisions -->
-        <var-decl name='subdivisions' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/renderhints.h' line='51' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='96'>
-        <!-- REAL Renderhints::tmp1 -->
-        <var-decl name='tmp1' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/renderhints.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int Renderhints::displaydomain -->
-        <var-decl name='displaydomain' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/renderhints.h' line='54' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int Renderhints::maxsubdivisions -->
-        <var-decl name='maxsubdivisions' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/renderhints.h' line='55' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- int Renderhints::wiretris -->
-        <var-decl name='wiretris' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/renderhints.h' line='56' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='224'>
-        <!-- int Renderhints::wirequads -->
-        <var-decl name='wirequads' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/renderhints.h' line='57' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Renderhints::Renderhints() -->
-        <function-decl name='Renderhints' filepath='libnurbs/internals/renderhints.h' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Renderhints*' -->
-          <parameter type-id='type-id-118' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Subdivider -->
-    <class-decl name='Subdivider' size-in-bits='20416' visibility='default' filepath='libnurbs/internals/subdivider.h' line='55' column='1' id='type-id-74'>
-      <member-type access='private'>
-        <!-- enum Subdivider::dir -->
-        <enum-decl name='dir' filepath='libnurbs/internals/subdivider.h' line='105' column='1' id='type-id-119'>
-          <underlying-type type-id='type-id-9'/>
-          <enumerator name='down' value='0'/>
-          <enumerator name='same' value='1'/>
-          <enumerator name='up' value='2'/>
-          <enumerator name='none' value='3'/>
-        </enum-decl>
-      </member-type>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Slicer Subdivider::slicer -->
-        <var-decl name='slicer' type-id='type-id-120' visibility='default' filepath='libnurbs/internals/subdivider.h' line='112' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='8064'>
-        <!-- ArcTessellator Subdivider::arctessellator -->
-        <var-decl name='arctessellator' type-id='type-id-121' visibility='default' filepath='libnurbs/internals/subdivider.h' line='113' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='8192'>
-        <!-- Pool Subdivider::arcpool -->
-        <var-decl name='arcpool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/subdivider.h' line='114' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='10688'>
-        <!-- Pool Subdivider::bezierarcpool -->
-        <var-decl name='bezierarcpool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/subdivider.h' line='115' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='13184'>
-        <!-- Pool Subdivider::pwlarcpool -->
-        <var-decl name='pwlarcpool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/subdivider.h' line='116' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='15680'>
-        <!-- TrimVertexPool Subdivider::trimvertexpool -->
-        <var-decl name='trimvertexpool' type-id='type-id-77' visibility='default' filepath='libnurbs/internals/subdivider.h' line='117' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18304'>
-        <!-- JumpBuffer* Subdivider::jumpbuffer -->
-        <var-decl name='jumpbuffer' type-id='type-id-75' visibility='default' filepath='libnurbs/internals/subdivider.h' line='119' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18368'>
-        <!-- Renderhints& Subdivider::renderhints -->
-        <var-decl name='renderhints' type-id='type-id-122' visibility='default' filepath='libnurbs/internals/subdivider.h' line='120' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18432'>
-        <!-- Backend& Subdivider::backend -->
-        <var-decl name='backend' type-id='type-id-109' visibility='default' filepath='libnurbs/internals/subdivider.h' line='121' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18496'>
-        <!-- Bin Subdivider::initialbin -->
-        <var-decl name='initialbin' type-id='type-id-123' visibility='default' filepath='libnurbs/internals/subdivider.h' line='123' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18624'>
-        <!-- Arc_ptr Subdivider::pjarc -->
-        <var-decl name='pjarc' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/subdivider.h' line='124' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18688'>
-        <!-- int Subdivider::s_index -->
-        <var-decl name='s_index' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/subdivider.h' line='125' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18720'>
-        <!-- int Subdivider::t_index -->
-        <var-decl name='t_index' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/subdivider.h' line='126' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18752'>
-        <!-- Quilt* Subdivider::qlist -->
-        <var-decl name='qlist' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/subdivider.h' line='127' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='18816'>
-        <!-- Flist Subdivider::spbrkpts -->
-        <var-decl name='spbrkpts' type-id='type-id-126' visibility='default' filepath='libnurbs/internals/subdivider.h' line='128' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='19136'>
-        <!-- Flist Subdivider::tpbrkpts -->
-        <var-decl name='tpbrkpts' type-id='type-id-126' visibility='default' filepath='libnurbs/internals/subdivider.h' line='129' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='19456'>
-        <!-- Flist Subdivider::smbrkpts -->
-        <var-decl name='smbrkpts' type-id='type-id-126' visibility='default' filepath='libnurbs/internals/subdivider.h' line='130' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='19776'>
-        <!-- Flist Subdivider::tmbrkpts -->
-        <var-decl name='tmbrkpts' type-id='type-id-126' visibility='default' filepath='libnurbs/internals/subdivider.h' line='131' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='20096'>
-        <!-- REAL Subdivider::stepsizes[4] -->
-        <var-decl name='stepsizes' type-id='type-id-127' visibility='default' filepath='libnurbs/internals/subdivider.h' line='132' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='20224'>
-        <!-- int Subdivider::showDegenerate -->
-        <var-decl name='showDegenerate' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/subdivider.h' line='133' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='20256'>
-        <!-- int Subdivider::isArcTypeBezier -->
-        <var-decl name='isArcTypeBezier' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/subdivider.h' line='134' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='20288'>
-        <!-- REAL Subdivider::domain_distance_u_rate -->
-        <var-decl name='domain_distance_u_rate' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/subdivider.h' line='188' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='20320'>
-        <!-- REAL Subdivider::domain_distance_v_rate -->
-        <var-decl name='domain_distance_v_rate' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/subdivider.h' line='189' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='20352'>
-        <!-- int Subdivider::is_domain_distance_sampling -->
-        <var-decl name='is_domain_distance_sampling' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/subdivider.h' line='190' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Subdivider::Subdivider(Renderhints&, Backend&) -->
-        <function-decl name='Subdivider' filepath='libnurbs/internals/subdivider.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-128' is-artificial='yes'/>
-          <!-- parameter of type 'Renderhints&' -->
-          <parameter type-id='type-id-129'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-111'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Subdivider::~Subdivider(int) -->
-        <function-decl name='~Subdivider' filepath='libnurbs/internals/subdivider.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-128' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct TrimVertexPool -->
-    <class-decl name='TrimVertexPool' size-in-bits='2624' is-struct='yes' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='45' column='1' id='type-id-77'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Pool TrimVertexPool::pool -->
-        <var-decl name='pool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2496'>
-        <!-- TrimVertex** TrimVertexPool::vlist -->
-        <var-decl name='vlist' type-id='type-id-130' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='53' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2560'>
-        <!-- int TrimVertexPool::nextvlistslot -->
-        <var-decl name='nextvlistslot' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='54' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2592'>
-        <!-- int TrimVertexPool::vlistsize -->
-        <var-decl name='vlistsize' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='55' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- TrimVertexPool::TrimVertexPool() -->
-        <function-decl name='TrimVertexPool' filepath='libnurbs/internals/trimvertpool.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'TrimVertexPool*' -->
-          <parameter type-id='type-id-131' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' destructor='yes'>
-        <!-- TrimVertexPool::~TrimVertexPool(int) -->
-        <function-decl name='~TrimVertexPool' filepath='libnurbs/internals/trimvertpool.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'TrimVertexPool*' -->
-          <parameter type-id='type-id-131' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct bezierPatchMesh -->
-    <class-decl name='bezierPatchMesh' size-in-bits='960' is-struct='yes' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='39' column='1' id='type-id-69'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- bezierPatch* bezierPatchMesh::bpatch -->
-        <var-decl name='bpatch' type-id='type-id-132' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='40' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- bezierPatch* bezierPatchMesh::bpatch_normal -->
-        <var-decl name='bpatch_normal' type-id='type-id-132' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='41' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- bezierPatch* bezierPatchMesh::bpatch_texcoord -->
-        <var-decl name='bpatch_texcoord' type-id='type-id-132' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='42' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- bezierPatch* bezierPatchMesh::bpatch_color -->
-        <var-decl name='bpatch_color' type-id='type-id-132' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='43' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- float* bezierPatchMesh::UVarray -->
-        <var-decl name='UVarray' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='45' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- int* bezierPatchMesh::length_array -->
-        <var-decl name='length_array' type-id='type-id-133' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- GLenum* bezierPatchMesh::type_array -->
-        <var-decl name='type_array' type-id='type-id-134' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='47' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='448'>
-        <!-- int bezierPatchMesh::size_UVarray -->
-        <var-decl name='size_UVarray' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='50' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='480'>
-        <!-- int bezierPatchMesh::index_UVarray -->
-        <var-decl name='index_UVarray' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='51' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='512'>
-        <!-- int bezierPatchMesh::size_length_array -->
-        <var-decl name='size_length_array' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='544'>
-        <!-- int bezierPatchMesh::index_length_array -->
-        <var-decl name='index_length_array' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='53' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='576'>
-        <!-- int bezierPatchMesh::counter -->
-        <var-decl name='counter' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='55' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='608'>
-        <!-- GLenum bezierPatchMesh::type -->
-        <var-decl name='type' type-id='type-id-59' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='56' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='640'>
-        <!-- float* bezierPatchMesh::vertex_array -->
-        <var-decl name='vertex_array' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='59' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='704'>
-        <!-- float* bezierPatchMesh::normal_array -->
-        <var-decl name='normal_array' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='768'>
-        <!-- float* bezierPatchMesh::color_array -->
-        <var-decl name='color_array' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='61' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='832'>
-        <!-- float* bezierPatchMesh::texcoord_array -->
-        <var-decl name='texcoord_array' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='896'>
-        <!-- bezierPatchMesh* bezierPatchMesh::next -->
-        <var-decl name='next' type-id='type-id-51' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='65' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- struct surfEvalMachine -->
-    <class-decl name='surfEvalMachine' size-in-bits='210272' is-struct='yes' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='63' column='1' id='type-id-93'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- REAL surfEvalMachine::uprime -->
-        <var-decl name='uprime' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='64' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- REAL surfEvalMachine::vprime -->
-        <var-decl name='vprime' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='65' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int surfEvalMachine::k -->
-        <var-decl name='k' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='66' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='96'>
-        <!-- REAL surfEvalMachine::u1 -->
-        <var-decl name='u1' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='67' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- REAL surfEvalMachine::u2 -->
-        <var-decl name='u2' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='68' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int surfEvalMachine::ustride -->
-        <var-decl name='ustride' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='69' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- int surfEvalMachine::uorder -->
-        <var-decl name='uorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='70' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='224'>
-        <!-- REAL surfEvalMachine::v1 -->
-        <var-decl name='v1' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='71' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- REAL surfEvalMachine::v2 -->
-        <var-decl name='v2' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='72' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='288'>
-        <!-- int surfEvalMachine::vstride -->
-        <var-decl name='vstride' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='73' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- int surfEvalMachine::vorder -->
-        <var-decl name='vorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='74' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='352'>
-        <!-- REAL surfEvalMachine::ctlPoints[6400] -->
-        <var-decl name='ctlPoints' type-id='type-id-53' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='75' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='205152'>
-        <!-- REAL surfEvalMachine::ucoeff[40] -->
-        <var-decl name='ucoeff' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='76' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='206432'>
-        <!-- REAL surfEvalMachine::vcoeff[40] -->
-        <var-decl name='vcoeff' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='77' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='207712'>
-        <!-- REAL surfEvalMachine::ucoeffDeriv[40] -->
-        <var-decl name='ucoeffDeriv' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='78' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='208992'>
-        <!-- REAL surfEvalMachine::vcoeffDeriv[40] -->
-        <var-decl name='vcoeffDeriv' type-id='type-id-5' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='79' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- const GLint -->
-    <qualified-type-def type-id='type-id-63' const='yes' id='type-id-90'/>
-    <!-- unsigned char -->
-    <type-decl name='unsigned char' size-in-bits='8' id='type-id-91'/>
-    <!-- unsigned int -->
-    <type-decl name='unsigned int' size-in-bits='32' id='type-id-92'/>
-    <!-- Backend& -->
-    <qualified-type-def type-id='type-id-111' id='type-id-109'/>
-    <!-- Backend& -->
-    <reference-type-def kind='lvalue' type-id='type-id-73' size-in-bits='64' id='type-id-111'/>
-    <!-- Backend* -->
-    <pointer-type-def type-id='type-id-73' size-in-bits='64' id='type-id-106'/>
-    <!-- BasicCurveEvaluator& -->
-    <qualified-type-def type-id='type-id-88' id='type-id-103'/>
-    <!-- BasicSurfaceEvaluator& -->
-    <qualified-type-def type-id='type-id-89' id='type-id-104'/>
-    <!-- Buffer* -->
-    <pointer-type-def type-id='type-id-135' size-in-bits='64' id='type-id-113'/>
-    <!-- GLenum* -->
-    <pointer-type-def type-id='type-id-59' size-in-bits='64' id='type-id-134'/>
-    <!-- Mapdesc* -->
-    <pointer-type-def type-id='type-id-136' size-in-bits='64' id='type-id-107'/>
-    <!-- Mapdesc** -->
-    <pointer-type-def type-id='type-id-107' size-in-bits='64' id='type-id-108'/>
-    <!-- Maplist* -->
-    <pointer-type-def type-id='type-id-72' size-in-bits='64' id='type-id-110'/>
-    <!-- O_nurbscurve* -->
-    <pointer-type-def type-id='type-id-137' size-in-bits='64' id='type-id-97'/>
-    <!-- O_nurbssurface* -->
-    <pointer-type-def type-id='type-id-138' size-in-bits='64' id='type-id-98'/>
-    <!-- O_pwlcurve* -->
-    <pointer-type-def type-id='type-id-139' size-in-bits='64' id='type-id-99'/>
-    <!-- Pool* -->
-    <pointer-type-def type-id='type-id-76' size-in-bits='64' id='type-id-117'/>
-    <!-- Quilt* -->
-    <pointer-type-def type-id='type-id-140' size-in-bits='64' id='type-id-125'/>
-    <!-- REAL[3][4] -->
-    <array-type-def dimensions='2' type-id='type-id-1' size-in-bits='384' id='type-id-105'>
-      <!-- <anonymous range>[3] -->
-      <subrange length='3' type-id='type-id-3' id='type-id-68'/>
-      <!-- <anonymous range>[4] -->
-      <subrange length='4' type-id='type-id-3' id='type-id-65'/>
-    </array-type-def>
-    <!-- REAL[4] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='128' id='type-id-127'>
-      <!-- <anonymous range>[4] -->
-      <subrange length='4' type-id='type-id-3' id='type-id-65'/>
-    </array-type-def>
-    <!-- Renderhints& -->
-    <qualified-type-def type-id='type-id-129' id='type-id-122'/>
-    <!-- Renderhints& -->
-    <reference-type-def kind='lvalue' type-id='type-id-71' size-in-bits='64' id='type-id-129'/>
-    <!-- Renderhints* -->
-    <pointer-type-def type-id='type-id-71' size-in-bits='64' id='type-id-118'/>
-    <!-- Subdivider* -->
-    <pointer-type-def type-id='type-id-74' size-in-bits='64' id='type-id-128'/>
-    <!-- TrimVertex** -->
-    <pointer-type-def type-id='type-id-141' size-in-bits='64' id='type-id-130'/>
-    <!-- TrimVertexPool* -->
-    <pointer-type-def type-id='type-id-77' size-in-bits='64' id='type-id-131'/>
-    <!-- bezierPatch* -->
-    <pointer-type-def type-id='type-id-142' size-in-bits='64' id='type-id-132'/>
-    <!-- char* -->
-    <pointer-type-def type-id='type-id-143' size-in-bits='64' id='type-id-115'/>
-    <!-- char*[32] -->
-    <array-type-def dimensions='1' type-id='type-id-115' size-in-bits='2048' id='type-id-114'>
-      <!-- <anonymous range>[32] -->
-      <subrange length='32' type-id='type-id-3' id='type-id-144'/>
-    </array-type-def>
-    <!-- class ArcTessellator -->
-    <class-decl name='ArcTessellator' size-in-bits='128' visibility='default' filepath='libnurbs/internals/arctess.h' line='47' column='1' id='type-id-121'>
-      <data-member access='private' static='yes'>
-        <!-- static REAL ArcTessellator::gl_Bernstein[][24][24] -->
-        <var-decl name='gl_Bernstein' type-id='type-id-145' mangled-name='_ZN14ArcTessellator12gl_BernsteinE' visibility='default' filepath='libnurbs/internals/arctess.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Pool& ArcTessellator::pwlarcpool -->
-        <var-decl name='pwlarcpool' type-id='type-id-146' visibility='default' filepath='libnurbs/internals/arctess.h' line='61' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- TrimVertexPool& ArcTessellator::trimvertexpool -->
-        <var-decl name='trimvertexpool' type-id='type-id-147' visibility='default' filepath='libnurbs/internals/arctess.h' line='62' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- ArcTessellator::ArcTessellator(TrimVertexPool&, Pool&) -->
-        <function-decl name='ArcTessellator' filepath='libnurbs/internals/arctess.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-148' is-artificial='yes'/>
-          <!-- parameter of type 'TrimVertexPool&' -->
-          <parameter type-id='type-id-149'/>
-          <!-- parameter of type 'Pool&' -->
-          <parameter type-id='type-id-150'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- ArcTessellator::~ArcTessellator(int) -->
-        <function-decl name='~ArcTessellator' filepath='libnurbs/internals/arctess.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-148' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Bin -->
-    <class-decl name='Bin' size-in-bits='128' visibility='default' filepath='libnurbs/internals/bin.h' line='44' column='1' id='type-id-123'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Arc_ptr Bin::head -->
-        <var-decl name='head' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/bin.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Arc_ptr Bin::current -->
-        <var-decl name='current' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/bin.h' line='47' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class DisplayList -->
-    <class-decl name='DisplayList' size-in-bits='2688' visibility='default' filepath='libnurbs/internals/displaylist.h' line='65' column='1' id='type-id-94'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Dlnode* DisplayList::nodes -->
-        <var-decl name='nodes' type-id='type-id-152' visibility='default' filepath='libnurbs/internals/displaylist.h' line='73' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Pool DisplayList::dlnodePool -->
-        <var-decl name='dlnodePool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/displaylist.h' line='74' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2560'>
-        <!-- Dlnode** DisplayList::lastNode -->
-        <var-decl name='lastNode' type-id='type-id-153' visibility='default' filepath='libnurbs/internals/displaylist.h' line='75' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2624'>
-        <!-- NurbsTessellator* DisplayList::nt -->
-        <var-decl name='nt' type-id='type-id-87' visibility='default' filepath='libnurbs/internals/displaylist.h' line='76' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- DisplayList::DisplayList(NurbsTessellator*) -->
-        <function-decl name='DisplayList' filepath='libnurbs/internals/displaylist.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'DisplayList*' -->
-          <parameter type-id='type-id-86' is-artificial='yes'/>
-          <!-- parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- DisplayList::~DisplayList(int) -->
-        <function-decl name='~DisplayList' filepath='libnurbs/internals/displaylist.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'DisplayList*' -->
-          <parameter type-id='type-id-86' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Flist -->
-    <class-decl name='Flist' size-in-bits='320' visibility='default' filepath='libnurbs/internals/flist.h' line='42' column='1' id='type-id-126'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- REAL* Flist::pts -->
-        <var-decl name='pts' type-id='type-id-16' visibility='default' filepath='libnurbs/internals/flist.h' line='44' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- int Flist::npts -->
-        <var-decl name='npts' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/flist.h' line='45' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='96'>
-        <!-- int Flist::start -->
-        <var-decl name='start' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/flist.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- int Flist::end -->
-        <var-decl name='end' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/flist.h' line='47' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='192'>
-        <!-- FlistSorter Flist::sorter -->
-        <var-decl name='sorter' type-id='type-id-154' visibility='default' filepath='libnurbs/internals/flist.h' line='56' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Flist::Flist() -->
-        <function-decl name='Flist' filepath='libnurbs/internals/flist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-155' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Flist::~Flist(int) -->
-        <function-decl name='~Flist' filepath='libnurbs/internals/flist.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-155' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct JumpBuffer -->
-    <class-decl name='JumpBuffer' size-in-bits='1600' is-struct='yes' visibility='default' filepath='libnurbs/internals/mysetjmp.h' line='56' column='1' id='type-id-95'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- jmp_buf JumpBuffer::buf -->
-        <var-decl name='buf' type-id='type-id-156' visibility='default' filepath='libnurbs/internals/mysetjmp.h' line='57' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- struct O_curve -->
-    <class-decl name='O_curve' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='55' column='1' id='type-id-96'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <member-type access='public'>
-        <!-- union {O_nurbscurve* o_nurbscurve; O_pwlcurve* o_pwlcurve;} -->
-        <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='56' column='1' id='type-id-158'>
-          <data-member access='public'>
-            <!-- O_nurbscurve* o_nurbscurve -->
-            <var-decl name='o_nurbscurve' type-id='type-id-97' visibility='default' filepath='libnurbs/internals/reader.h' line='57' column='1'/>
-          </data-member>
-          <data-member access='public'>
-            <!-- O_pwlcurve* o_pwlcurve -->
-            <var-decl name='o_pwlcurve' type-id='type-id-99' visibility='default' filepath='libnurbs/internals/reader.h' line='58' column='1'/>
-          </data-member>
-        </union-decl>
-      </member-type>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- union {O_nurbscurve* o_nurbscurve; O_pwlcurve* o_pwlcurve;} O_curve::curve -->
-        <var-decl name='curve' type-id='type-id-158' visibility='default' filepath='libnurbs/internals/reader.h' line='59' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- Curvetype O_curve::curvetype -->
-        <var-decl name='curvetype' type-id='type-id-159' visibility='default' filepath='libnurbs/internals/reader.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- O_curve* O_curve::next -->
-        <var-decl name='next' type-id='type-id-85' visibility='default' filepath='libnurbs/internals/reader.h' line='61' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- O_surface* O_curve::owner -->
-        <var-decl name='owner' type-id='type-id-83' visibility='default' filepath='libnurbs/internals/reader.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- int O_curve::used -->
-        <var-decl name='used' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='63' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='288'>
-        <!-- int O_curve::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='64' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- long int O_curve::nuid -->
-        <var-decl name='nuid' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/reader.h' line='65' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- O_curve::O_curve() -->
-        <function-decl name='O_curve' filepath='libnurbs/internals/reader.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'O_curve*' -->
-          <parameter type-id='type-id-85' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct O_surface -->
-    <class-decl name='O_surface' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='112' column='1' id='type-id-100'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- O_nurbssurface* O_surface::o_nurbssurface -->
-        <var-decl name='o_nurbssurface' type-id='type-id-98' visibility='default' filepath='libnurbs/internals/reader.h' line='113' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- O_trim* O_surface::o_trim -->
-        <var-decl name='o_trim' type-id='type-id-84' visibility='default' filepath='libnurbs/internals/reader.h' line='114' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int O_surface::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='115' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- long int O_surface::nuid -->
-        <var-decl name='nuid' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/reader.h' line='116' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- O_surface::O_surface() -->
-        <function-decl name='O_surface' filepath='libnurbs/internals/reader.h' line='117' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'O_surface*' -->
-          <parameter type-id='type-id-83' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct O_trim -->
-    <class-decl name='O_trim' size-in-bits='192' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='94' column='1' id='type-id-101'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- O_curve* O_trim::o_curve -->
-        <var-decl name='o_curve' type-id='type-id-85' visibility='default' filepath='libnurbs/internals/reader.h' line='95' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- O_trim* O_trim::next -->
-        <var-decl name='next' type-id='type-id-84' visibility='default' filepath='libnurbs/internals/reader.h' line='96' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int O_trim::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='97' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- O_trim::O_trim() -->
-        <function-decl name='O_trim' filepath='libnurbs/internals/reader.h' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'O_trim*' -->
-          <parameter type-id='type-id-84' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Slicer -->
-    <class-decl name='Slicer' size-in-bits='8064' visibility='default' filepath='libnurbs/internals/slicer.h' line='49' column='1' id='type-id-120'>
-      <!-- class CoveAndTiler -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-160'/>
-      <!-- class Mesher -->
-      <base-class access='public' layout-offset-in-bits='128' type-id='type-id-161'/>
-      <data-member access='private' layout-offset-in-bits='5248'>
-        <!-- Backend& Slicer::backend -->
-        <var-decl name='backend' type-id='type-id-109' visibility='default' filepath='libnurbs/internals/slicer.h' line='72' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5312'>
-        <!-- REAL Slicer::oneOverDu -->
-        <var-decl name='oneOverDu' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/slicer.h' line='73' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5344'>
-        <!-- REAL Slicer::du -->
-        <var-decl name='du' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/slicer.h' line='74' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5376'>
-        <!-- REAL Slicer::dv -->
-        <var-decl name='dv' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/slicer.h' line='74' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5408'>
-        <!-- int Slicer::isolines -->
-        <var-decl name='isolines' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/slicer.h' line='75' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5440'>
-        <!-- int Slicer::ulinear -->
-        <var-decl name='ulinear' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/slicer.h' line='81' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5472'>
-        <!-- int Slicer::vlinear -->
-        <var-decl name='vlinear' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/slicer.h' line='82' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Slicer::Slicer(int, void**, Backend&) -->
-        <function-decl name='Slicer' filepath='libnurbs/internals/slicer.cc' line='1181' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-111'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Slicer::~Slicer(int, void**) -->
-        <function-decl name='~Slicer' filepath='libnurbs/internals/slicer.cc' line='1192' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class StoredVertex -->
-    <class-decl name='StoredVertex' size-in-bits='256' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='84' column='1' id='type-id-102'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- int StoredVertex::type -->
-        <var-decl name='type' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='95' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='32'>
-        <!-- REAL StoredVertex::coord[2] -->
-        <var-decl name='coord' type-id='type-id-164' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='96' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- long int StoredVertex::point[2] -->
-        <var-decl name='point' type-id='type-id-165' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='97' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- StoredVertex::StoredVertex() -->
-        <function-decl name='StoredVertex' filepath='libnurbs/interface/glsurfeval.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'StoredVertex*' -->
-          <parameter type-id='type-id-67' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- StoredVertex::~StoredVertex(int) -->
-        <function-decl name='~StoredVertex' filepath='libnurbs/interface/glsurfeval.h' line='87' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'StoredVertex*' -->
-          <parameter type-id='type-id-67' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- const char* -->
-    <pointer-type-def type-id='type-id-166' size-in-bits='64' id='type-id-116'/>
-    <!-- int* -->
-    <pointer-type-def type-id='type-id-11' size-in-bits='64' id='type-id-133'/>
-    <!-- typedef Arc* Arc_ptr -->
-    <typedef-decl name='Arc_ptr' type-id='type-id-167' filepath='libnurbs/internals/arc.h' line='50' column='1' id='type-id-124'/>
-    <!-- Arc* -->
-    <pointer-type-def type-id='type-id-168' size-in-bits='64' id='type-id-167'/>
-    <!-- ArcTessellator* -->
-    <pointer-type-def type-id='type-id-121' size-in-bits='64' id='type-id-148'/>
-    <!-- Bin* -->
-    <pointer-type-def type-id='type-id-123' size-in-bits='64' id='type-id-151'/>
-    <!-- Dlnode* -->
-    <pointer-type-def type-id='type-id-169' size-in-bits='64' id='type-id-152'/>
-    <!-- Dlnode** -->
-    <pointer-type-def type-id='type-id-152' size-in-bits='64' id='type-id-153'/>
-    <!-- Flist* -->
-    <pointer-type-def type-id='type-id-126' size-in-bits='64' id='type-id-155'/>
-    <!-- Pool& -->
-    <qualified-type-def type-id='type-id-150' id='type-id-146'/>
-    <!-- Pool& -->
-    <reference-type-def kind='lvalue' type-id='type-id-76' size-in-bits='64' id='type-id-150'/>
-    <!-- REAL[2] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='64' id='type-id-164'>
-      <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
-    </array-type-def>
-    <!-- REAL[][24][24] -->
-    <array-type-def dimensions='3' type-id='type-id-1' size-in-bits='infinite' id='type-id-145'>
-      <!-- <anonymous range>[] -->
-      <subrange length='infinite' id='type-id-170'/>
-      <!-- <anonymous range>[24] -->
-      <subrange length='24' type-id='type-id-3' id='type-id-171'/>
-      <!-- <anonymous range>[24] -->
-      <subrange length='24' type-id='type-id-3' id='type-id-171'/>
-    </array-type-def>
-    <!-- Slicer* -->
-    <pointer-type-def type-id='type-id-120' size-in-bits='64' id='type-id-162'/>
-    <!-- TrimVertex* -->
-    <pointer-type-def type-id='type-id-172' size-in-bits='64' id='type-id-141'/>
-    <!-- TrimVertexPool& -->
-    <qualified-type-def type-id='type-id-149' id='type-id-147'/>
-    <!-- TrimVertexPool& -->
-    <reference-type-def kind='lvalue' type-id='type-id-77' size-in-bits='64' id='type-id-149'/>
-    <!-- char -->
-    <type-decl name='char' size-in-bits='8' id='type-id-143'/>
-    <!-- class Buffer -->
-    <class-decl name='Buffer' size-in-bits='64' visibility='default' filepath='libnurbs/internals/bufpool.h' line='45' column='1' id='type-id-135'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Buffer* Buffer::next -->
-        <var-decl name='next' type-id='type-id-113' visibility='default' filepath='libnurbs/internals/bufpool.h' line='47' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- class CoveAndTiler -->
-    <class-decl name='CoveAndTiler' size-in-bits='2688' visibility='default' filepath='libnurbs/internals/coveandtiler.h' line='46' column='1' id='type-id-160'>
-      <!-- class TrimRegion -->
-      <base-class access='public' layout-offset-in-bits='192' is-virtual='yes' type-id='type-id-173'/>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Backend& CoveAndTiler::backend -->
-        <var-decl name='backend' type-id='type-id-109' visibility='default' filepath='libnurbs/internals/coveandtiler.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='private' static='yes'>
-        <!-- static const int CoveAndTiler::MAXSTRIPSIZE -->
-        <var-decl name='MAXSTRIPSIZE' type-id='type-id-174' mangled-name='_ZN12CoveAndTiler12MAXSTRIPSIZEE' visibility='default' filepath='libnurbs/internals/coveandtiler.cc' line='50' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- CoveAndTiler::CoveAndTiler(int, void**, Backend&) -->
-        <function-decl name='CoveAndTiler' filepath='libnurbs/internals/coveandtiler.cc' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'CoveAndTiler*' -->
-          <parameter type-id='type-id-175' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-111'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- CoveAndTiler::~CoveAndTiler(int, void**) -->
-        <function-decl name='~CoveAndTiler' filepath='libnurbs/internals/coveandtiler.cc' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'CoveAndTiler*' -->
-          <parameter type-id='type-id-175' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class FlistSorter -->
-    <class-decl name='FlistSorter' size-in-bits='128' visibility='default' filepath='libnurbs/internals/flistsorter.h' line='42' column='1' id='type-id-154'>
-      <!-- class Sorter -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-176'/>
-      <member-function access='private' constructor='yes'>
-        <!-- FlistSorter::FlistSorter() -->
-        <function-decl name='FlistSorter' filepath='libnurbs/internals/flistsorter.cc' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-177' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes' vtable-offset='-1'>
-        <!-- FlistSorter::~FlistSorter(int) -->
-        <function-decl name='~FlistSorter' filepath='libnurbs/internals/flistsorter.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-177' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='2'>
-        <!-- int FlistSorter::qscmp(char*, char*) -->
-        <function-decl name='qscmp' mangled-name='_ZN11FlistSorter5qscmpEPcS0_' filepath='libnurbs/internals/flistsorter.cc' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-177' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- int -->
-          <return type-id='type-id-11'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='3'>
-        <!-- void FlistSorter::qsexc(char*, char*) -->
-        <function-decl name='qsexc' mangled-name='_ZN11FlistSorter5qsexcEPcS0_' filepath='libnurbs/internals/flistsorter.cc' line='62' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-177' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='4'>
-        <!-- void FlistSorter::qstexc(char*, char*, char*) -->
-        <function-decl name='qstexc' mangled-name='_ZN11FlistSorter6qstexcEPcS0_S0_' filepath='libnurbs/internals/flistsorter.cc' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-177' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct Mapdesc -->
-    <class-decl name='Mapdesc' size-in-bits='3392' is-struct='yes' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='49' column='1' id='type-id-136'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- REAL Mapdesc::pixel_tolerance -->
-        <var-decl name='pixel_tolerance' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='104' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- REAL Mapdesc::error_tolerance -->
-        <var-decl name='error_tolerance' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='105' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- REAL Mapdesc::object_space_error_tolerance -->
-        <var-decl name='object_space_error_tolerance' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='106' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='96'>
-        <!-- REAL Mapdesc::clampfactor -->
-        <var-decl name='clampfactor' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='107' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- REAL Mapdesc::minsavings -->
-        <var-decl name='minsavings' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='108' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- REAL Mapdesc::maxrate -->
-        <var-decl name='maxrate' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='109' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- REAL Mapdesc::maxsrate -->
-        <var-decl name='maxsrate' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='110' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='224'>
-        <!-- REAL Mapdesc::maxtrate -->
-        <var-decl name='maxtrate' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='111' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- REAL Mapdesc::bboxsize[5] -->
-        <var-decl name='bboxsize' type-id='type-id-178' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='112' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='448'>
-        <!-- long int Mapdesc::type -->
-        <var-decl name='type' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='115' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='512'>
-        <!-- int Mapdesc::isrational -->
-        <var-decl name='isrational' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='116' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='544'>
-        <!-- int Mapdesc::ncoords -->
-        <var-decl name='ncoords' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='117' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='576'>
-        <!-- int Mapdesc::hcoords -->
-        <var-decl name='hcoords' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='118' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='608'>
-        <!-- int Mapdesc::inhcoords -->
-        <var-decl name='inhcoords' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='119' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='640'>
-        <!-- int Mapdesc::mask -->
-        <var-decl name='mask' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='120' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='672'>
-        <!-- Maxmatrix Mapdesc::bmat -->
-        <var-decl name='bmat' type-id='type-id-179' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='121' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1472'>
-        <!-- Maxmatrix Mapdesc::cmat -->
-        <var-decl name='cmat' type-id='type-id-179' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='122' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2272'>
-        <!-- Maxmatrix Mapdesc::smat -->
-        <var-decl name='smat' type-id='type-id-179' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='123' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='3072'>
-        <!-- REAL Mapdesc::s_steps -->
-        <var-decl name='s_steps' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='124' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='3104'>
-        <!-- REAL Mapdesc::t_steps -->
-        <var-decl name='t_steps' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='125' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='3136'>
-        <!-- REAL Mapdesc::sampling_method -->
-        <var-decl name='sampling_method' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='126' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='3168'>
-        <!-- REAL Mapdesc::culling_method -->
-        <var-decl name='culling_method' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='127' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='3200'>
-        <!-- REAL Mapdesc::bbox_subdividing -->
-        <var-decl name='bbox_subdividing' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='128' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='3264'>
-        <!-- Mapdesc* Mapdesc::next -->
-        <var-decl name='next' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='129' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='3328'>
-        <!-- Backend& Mapdesc::backend -->
-        <var-decl name='backend' type-id='type-id-109' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='130' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Mapdesc::Mapdesc(long int, int, int, Backend&) -->
-        <function-decl name='Mapdesc' filepath='libnurbs/internals/mapdesc.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Mapdesc*' -->
-          <parameter type-id='type-id-107' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-111'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Mesher -->
-    <class-decl name='Mesher' size-in-bits='7680' visibility='default' filepath='libnurbs/internals/mesher.h' line='47' column='1' id='type-id-161'>
-      <!-- class TrimRegion -->
-      <base-class access='public' layout-offset-in-bits='192' is-virtual='yes' type-id='type-id-173'/>
-      <!-- class Hull -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-180'/>
-      <data-member access='private' static='yes'>
-        <!-- static const float Mesher::ZERO -->
-        <var-decl name='ZERO' type-id='type-id-181' mangled-name='_ZN6Mesher4ZEROE' visibility='default' filepath='libnurbs/internals/mesher.cc' line='53' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2240'>
-        <!-- Backend& Mesher::backend -->
-        <var-decl name='backend' type-id='type-id-109' visibility='default' filepath='libnurbs/internals/mesher.h' line='56' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2304'>
-        <!-- Pool Mesher::p -->
-        <var-decl name='p' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/mesher.h' line='58' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='4800'>
-        <!-- unsigned int Mesher::stacksize -->
-        <var-decl name='stacksize' type-id='type-id-92' visibility='default' filepath='libnurbs/internals/mesher.h' line='59' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='4864'>
-        <!-- GridTrimVertex** Mesher::vdata -->
-        <var-decl name='vdata' type-id='type-id-182' visibility='default' filepath='libnurbs/internals/mesher.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='4928'>
-        <!-- GridTrimVertex* Mesher::last[2] -->
-        <var-decl name='last' type-id='type-id-183' visibility='default' filepath='libnurbs/internals/mesher.h' line='61' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5056'>
-        <!-- int Mesher::itop -->
-        <var-decl name='itop' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mesher.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='5088'>
-        <!-- int Mesher::lastedge -->
-        <var-decl name='lastedge' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mesher.h' line='63' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Mesher::Mesher(int, void**, Backend&) -->
-        <function-decl name='Mesher' filepath='libnurbs/internals/mesher.cc' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Mesher*' -->
-          <parameter type-id='type-id-184' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-111'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Mesher::~Mesher(int, void**) -->
-        <function-decl name='~Mesher' filepath='libnurbs/internals/mesher.cc' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Mesher*' -->
-          <parameter type-id='type-id-184' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct O_nurbscurve -->
-    <class-decl name='O_nurbscurve' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='70' column='1' id='type-id-137'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- Quilt* O_nurbscurve::bezier_curves -->
-        <var-decl name='bezier_curves' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/reader.h' line='71' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- long int O_nurbscurve::type -->
-        <var-decl name='type' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/reader.h' line='72' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- REAL O_nurbscurve::tesselation -->
-        <var-decl name='tesselation' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/reader.h' line='73' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int O_nurbscurve::method -->
-        <var-decl name='method' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='74' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- O_nurbscurve* O_nurbscurve::next -->
-        <var-decl name='next' type-id='type-id-97' visibility='default' filepath='libnurbs/internals/reader.h' line='75' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- int O_nurbscurve::used -->
-        <var-decl name='used' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='76' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='288'>
-        <!-- int O_nurbscurve::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='77' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- O_curve* O_nurbscurve::owner -->
-        <var-decl name='owner' type-id='type-id-85' visibility='default' filepath='libnurbs/internals/reader.h' line='78' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- O_nurbscurve::O_nurbscurve(long int) -->
-        <function-decl name='O_nurbscurve' filepath='libnurbs/internals/reader.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'O_nurbscurve*' -->
-          <parameter type-id='type-id-97' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct O_nurbssurface -->
-    <class-decl name='O_nurbssurface' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='101' column='1' id='type-id-138'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- Quilt* O_nurbssurface::bezier_patches -->
-        <var-decl name='bezier_patches' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/reader.h' line='102' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- long int O_nurbssurface::type -->
-        <var-decl name='type' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/reader.h' line='103' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- O_surface* O_nurbssurface::owner -->
-        <var-decl name='owner' type-id='type-id-83' visibility='default' filepath='libnurbs/internals/reader.h' line='104' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- O_nurbssurface* O_nurbssurface::next -->
-        <var-decl name='next' type-id='type-id-98' visibility='default' filepath='libnurbs/internals/reader.h' line='105' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- int O_nurbssurface::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='106' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='288'>
-        <!-- int O_nurbssurface::used -->
-        <var-decl name='used' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='107' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- O_nurbssurface::O_nurbssurface(long int) -->
-        <function-decl name='O_nurbssurface' filepath='libnurbs/internals/reader.h' line='108' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'O_nurbssurface*' -->
-          <parameter type-id='type-id-98' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct O_pwlcurve -->
-    <class-decl name='O_pwlcurve' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='83' column='1' id='type-id-139'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- TrimVertex* O_pwlcurve::pts -->
-        <var-decl name='pts' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/reader.h' line='85' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int O_pwlcurve::npts -->
-        <var-decl name='npts' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='86' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- O_pwlcurve* O_pwlcurve::next -->
-        <var-decl name='next' type-id='type-id-99' visibility='default' filepath='libnurbs/internals/reader.h' line='87' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- int O_pwlcurve::used -->
-        <var-decl name='used' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='88' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='224'>
-        <!-- int O_pwlcurve::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='89' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- O_curve* O_pwlcurve::owner -->
-        <var-decl name='owner' type-id='type-id-85' visibility='default' filepath='libnurbs/internals/reader.h' line='90' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- O_pwlcurve::O_pwlcurve(long int, long int, float*, long int, TrimVertex*) -->
-        <function-decl name='O_pwlcurve' filepath='libnurbs/internals/reader.h' line='91' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'O_pwlcurve*' -->
-          <parameter type-id='type-id-99' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'float*' -->
-          <parameter type-id='type-id-58'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-141'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class PooledObj -->
-    <class-decl name='PooledObj' size-in-bits='8' visibility='default' filepath='libnurbs/internals/bufpool.h' line='118' column='1' id='type-id-157'/>
-    <!-- struct Quilt -->
-    <class-decl name='Quilt' size-in-bits='896' is-struct='yes' visibility='default' filepath='libnurbs/internals/quilt.h' line='64' column='1' id='type-id-140'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- Mapdesc* Quilt::mapdesc -->
-        <var-decl name='mapdesc' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/quilt.h' line='67' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- REAL* Quilt::cpts -->
-        <var-decl name='cpts' type-id='type-id-16' visibility='default' filepath='libnurbs/internals/quilt.h' line='68' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- Quiltspec Quilt::qspec[2] -->
-        <var-decl name='qspec' type-id='type-id-185' visibility='default' filepath='libnurbs/internals/quilt.h' line='69' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='768'>
-        <!-- Quiltspec_ptr Quilt::eqspec -->
-        <var-decl name='eqspec' type-id='type-id-186' visibility='default' filepath='libnurbs/internals/quilt.h' line='70' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='832'>
-        <!-- Quilt* Quilt::next -->
-        <var-decl name='next' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/quilt.h' line='71' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Quilt::Quilt(Mapdesc*) -->
-        <function-decl name='Quilt' filepath='libnurbs/internals/quilt.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Quilt*' -->
-          <parameter type-id='type-id-125' is-artificial='yes'/>
-          <!-- parameter of type 'Mapdesc*' -->
-          <parameter type-id='type-id-107'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct bezierPatch -->
-    <class-decl name='bezierPatch' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='36' column='1' id='type-id-142'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- float bezierPatch::umin -->
-        <var-decl name='umin' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- float bezierPatch::vmin -->
-        <var-decl name='vmin' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- float bezierPatch::umax -->
-        <var-decl name='umax' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='96'>
-        <!-- float bezierPatch::vmax -->
-        <var-decl name='vmax' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int bezierPatch::uorder -->
-        <var-decl name='uorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='38' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int bezierPatch::vorder -->
-        <var-decl name='vorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='39' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- int bezierPatch::dimension -->
-        <var-decl name='dimension' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='57' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- float* bezierPatch::ctlpoints -->
-        <var-decl name='ctlpoints' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='58' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- bezierPatch* bezierPatch::next -->
-        <var-decl name='next' type-id='type-id-132' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='63' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- const char -->
-    <qualified-type-def type-id='type-id-143' const='yes' id='type-id-166'/>
-    <!-- enum Curvetype -->
-    <enum-decl name='Curvetype' filepath='libnurbs/internals/reader.h' line='42' column='1' id='type-id-159'>
-      <underlying-type type-id='type-id-9'/>
-      <enumerator name='ct_nurbscurve' value='0'/>
-      <enumerator name='ct_pwlcurve' value='1'/>
-      <enumerator name='ct_none' value='2'/>
-    </enum-decl>
-    <!-- long int[2] -->
-    <array-type-def dimensions='1' type-id='type-id-15' size-in-bits='128' id='type-id-165'>
-      <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
-    </array-type-def>
-    <!-- typedef __jmp_buf_tag[1] jmp_buf -->
-    <typedef-decl name='jmp_buf' type-id='type-id-187' filepath='/usr/include/setjmp.h' line='49' column='1' id='type-id-156'/>
-    <!-- void** -->
-    <pointer-type-def type-id='type-id-25' size-in-bits='64' id='type-id-163'/>
-    <!-- CoveAndTiler* -->
-    <pointer-type-def type-id='type-id-160' size-in-bits='64' id='type-id-175'/>
-    <!-- FlistSorter* -->
-    <pointer-type-def type-id='type-id-154' size-in-bits='64' id='type-id-177'/>
-    <!-- GridTrimVertex** -->
-    <pointer-type-def type-id='type-id-188' size-in-bits='64' id='type-id-182'/>
-    <!-- GridTrimVertex*[2] -->
-    <array-type-def dimensions='1' type-id='type-id-188' size-in-bits='128' id='type-id-183'>
-      <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
-    </array-type-def>
-    <!-- Mesher* -->
-    <pointer-type-def type-id='type-id-161' size-in-bits='64' id='type-id-184'/>
-    <!-- Quiltspec[2] -->
-    <array-type-def dimensions='1' type-id='type-id-189' size-in-bits='640' id='type-id-185'>
-      <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
-    </array-type-def>
-    <!-- REAL[5] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='160' id='type-id-178'>
-      <!-- <anonymous range>[5] -->
-      <subrange length='5' type-id='type-id-3' id='type-id-190'/>
-    </array-type-def>
-    <!-- __jmp_buf_tag[1] -->
-    <array-type-def dimensions='1' type-id='type-id-191' size-in-bits='1600' id='type-id-187'>
-      <!-- <anonymous range>[1] -->
-      <subrange length='1' type-id='type-id-3' id='type-id-192'/>
-    </array-type-def>
-    <!-- struct Arc -->
-    <class-decl name='Arc' size-in-bits='448' is-struct='yes' visibility='default' filepath='libnurbs/internals/arc.h' line='55' column='1' id='type-id-168'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' static='yes'>
-        <!-- static const int Arc::bezier_tag -->
-        <var-decl name='bezier_tag' type-id='type-id-174' mangled-name='_ZN3Arc10bezier_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='58' column='1'/>
-      </data-member>
-      <data-member access='public' static='yes'>
-        <!-- static const int Arc::arc_tag -->
-        <var-decl name='arc_tag' type-id='type-id-174' mangled-name='_ZN3Arc7arc_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='59' column='1'/>
-      </data-member>
-      <data-member access='public' static='yes'>
-        <!-- static const int Arc::tail_tag -->
-        <var-decl name='tail_tag' type-id='type-id-174' mangled-name='_ZN3Arc8tail_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- Arc_ptr Arc::prev -->
-        <var-decl name='prev' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/arc.h' line='61' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- Arc_ptr Arc::next -->
-        <var-decl name='next' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/arc.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- Arc_ptr Arc::link -->
-        <var-decl name='link' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/arc.h' line='63' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- BezierArc* Arc::bezierArc -->
-        <var-decl name='bezierArc' type-id='type-id-193' visibility='default' filepath='libnurbs/internals/arc.h' line='64' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- PwlArc* Arc::pwlArc -->
-        <var-decl name='pwlArc' type-id='type-id-194' visibility='default' filepath='libnurbs/internals/arc.h' line='65' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- long int Arc::type -->
-        <var-decl name='type' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/arc.h' line='66' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- long int Arc::nuid -->
-        <var-decl name='nuid' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/arc.h' line='67' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-167' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-167'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-194'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-167' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-195'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct Dlnode -->
-    <class-decl name='Dlnode' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/internals/displaylist.h' line='48' column='1' id='type-id-169'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- PFVS Dlnode::work -->
-        <var-decl name='work' type-id='type-id-196' visibility='default' filepath='libnurbs/internals/displaylist.h' line='50' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- void* Dlnode::arg -->
-        <var-decl name='arg' type-id='type-id-25' visibility='default' filepath='libnurbs/internals/displaylist.h' line='51' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- PFVS Dlnode::cleanup -->
-        <var-decl name='cleanup' type-id='type-id-196' visibility='default' filepath='libnurbs/internals/displaylist.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- Dlnode* Dlnode::next -->
-        <var-decl name='next' type-id='type-id-152' visibility='default' filepath='libnurbs/internals/displaylist.h' line='53' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Dlnode::Dlnode(PFVS, void*, PFVS) -->
-        <function-decl name='Dlnode' filepath='libnurbs/internals/displaylist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Dlnode*' -->
-          <parameter type-id='type-id-152' is-artificial='yes'/>
-          <!-- parameter of type 'typedef PFVS' -->
-          <parameter type-id='type-id-196'/>
-          <!-- parameter of type 'void*' -->
-          <parameter type-id='type-id-25'/>
-          <!-- parameter of type 'typedef PFVS' -->
-          <parameter type-id='type-id-196'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Hull -->
-    <class-decl name='Hull' size-in-bits='4800' visibility='default' filepath='libnurbs/internals/hull.h' line='47' column='1' id='type-id-180'>
-      <!-- class TrimRegion -->
-      <base-class access='public' layout-offset-in-bits='192' is-virtual='yes' type-id='type-id-173'/>
-      <member-type access='private'>
-        <!-- struct Hull::Side -->
-        <class-decl name='Side' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/hull.h' line='55' column='1' id='type-id-197'>
-          <data-member access='public' layout-offset-in-bits='0'>
-            <!-- Trimline* Hull::Side::left -->
-            <var-decl name='left' type-id='type-id-198' visibility='default' filepath='libnurbs/internals/hull.h' line='56' column='1'/>
-          </data-member>
-          <data-member access='public' layout-offset-in-bits='64'>
-            <!-- Gridline* Hull::Side::line -->
-            <var-decl name='line' type-id='type-id-199' visibility='default' filepath='libnurbs/internals/hull.h' line='57' column='1'/>
-          </data-member>
-          <data-member access='public' layout-offset-in-bits='128'>
-            <!-- Trimline* Hull::Side::right -->
-            <var-decl name='right' type-id='type-id-198' visibility='default' filepath='libnurbs/internals/hull.h' line='58' column='1'/>
-          </data-member>
-          <data-member access='public' layout-offset-in-bits='192'>
-            <!-- long int Hull::Side::index -->
-            <var-decl name='index' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/hull.h' line='59' column='1'/>
-          </data-member>
-        </class-decl>
-      </member-type>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Hull::Side Hull::lower -->
-        <var-decl name='lower' type-id='type-id-197' visibility='default' filepath='libnurbs/internals/hull.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='320'>
-        <!-- Hull::Side Hull::upper -->
-        <var-decl name='upper' type-id='type-id-197' visibility='default' filepath='libnurbs/internals/hull.h' line='63' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='576'>
-        <!-- Trimline Hull::fakeleft -->
-        <var-decl name='fakeleft' type-id='type-id-200' visibility='default' filepath='libnurbs/internals/hull.h' line='64' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1408'>
-        <!-- Trimline Hull::fakeright -->
-        <var-decl name='fakeright' type-id='type-id-200' visibility='default' filepath='libnurbs/internals/hull.h' line='65' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Hull::Hull(int, void**) -->
-        <function-decl name='Hull' filepath='libnurbs/internals/hull.cc' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Hull*' -->
-          <parameter type-id='type-id-201' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Hull::~Hull(int, void**) -->
-        <function-decl name='~Hull' filepath='libnurbs/internals/hull.cc' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Hull*' -->
-          <parameter type-id='type-id-201' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Sorter -->
-    <class-decl name='Sorter' size-in-bits='128' visibility='default' filepath='libnurbs/internals/sorter.h' line='36' column='1' id='type-id-176'>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- int Sorter::es -->
-        <var-decl name='es' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/sorter.h' line='49' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Sorter::Sorter(int) -->
-        <function-decl name='Sorter' filepath='libnurbs/internals/sorter.cc' line='44' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-202' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes' vtable-offset='-1'>
-        <!-- Sorter::~Sorter(int) -->
-        <function-decl name='~Sorter' filepath='libnurbs/internals/sorter.h' line='39' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-202' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='2'>
-        <!-- int Sorter::qscmp(char*, char*) -->
-        <function-decl name='qscmp' mangled-name='_ZN6Sorter5qscmpEPcS0_' filepath='libnurbs/internals/sorter.cc' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-202' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- int -->
-          <return type-id='type-id-11'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='3'>
-        <!-- void Sorter::qsexc(char*, char*) -->
-        <function-decl name='qsexc' mangled-name='_ZN6Sorter5qsexcEPcS0_' filepath='libnurbs/internals/sorter.cc' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-202' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='4'>
-        <!-- void Sorter::qstexc(char*, char*, char*) -->
-        <function-decl name='qstexc' mangled-name='_ZN6Sorter6qstexcEPcS0_S0_' filepath='libnurbs/internals/sorter.cc' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-202' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class TrimRegion -->
-    <class-decl name='TrimRegion' size-in-bits='2560' visibility='default' filepath='libnurbs/internals/trimregion.h' line='46' column='1' id='type-id-173'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Trimline TrimRegion::left -->
-        <var-decl name='left' type-id='type-id-200' visibility='default' filepath='libnurbs/internals/trimregion.h' line='49' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='832'>
-        <!-- Trimline TrimRegion::right -->
-        <var-decl name='right' type-id='type-id-200' visibility='default' filepath='libnurbs/internals/trimregion.h' line='50' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1664'>
-        <!-- Gridline TrimRegion::top -->
-        <var-decl name='top' type-id='type-id-203' visibility='default' filepath='libnurbs/internals/trimregion.h' line='51' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='1984'>
-        <!-- Gridline TrimRegion::bot -->
-        <var-decl name='bot' type-id='type-id-203' visibility='default' filepath='libnurbs/internals/trimregion.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2304'>
-        <!-- Uarray TrimRegion::uarray -->
-        <var-decl name='uarray' type-id='type-id-204' visibility='default' filepath='libnurbs/internals/trimregion.h' line='53' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2496'>
-        <!-- REAL TrimRegion::oneOverDu -->
-        <var-decl name='oneOverDu' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/trimregion.h' line='65' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- TrimRegion::TrimRegion() -->
-        <function-decl name='TrimRegion' filepath='libnurbs/internals/trimregion.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'TrimRegion*' -->
-          <parameter type-id='type-id-205' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct TrimVertex -->
-    <class-decl name='TrimVertex' size-in-bits='128' is-struct='yes' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='43' column='1' id='type-id-172'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- REAL TrimVertex::param[2] -->
-        <var-decl name='param' type-id='type-id-164' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='45' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- long int TrimVertex::nuid -->
-        <var-decl name='nuid' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='50' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- const float -->
-    <qualified-type-def type-id='type-id-28' const='yes' id='type-id-181'/>
-    <!-- const int -->
-    <qualified-type-def type-id='type-id-11' const='yes' id='type-id-174'/>
-    <!-- typedef REAL[5][5] Maxmatrix -->
-    <typedef-decl name='Maxmatrix' type-id='type-id-206' filepath='libnurbs/internals/mapdesc.h' line='45' column='1' id='type-id-179'/>
-    <!-- typedef Quiltspec* Quiltspec_ptr -->
-    <typedef-decl name='Quiltspec_ptr' type-id='type-id-207' filepath='libnurbs/internals/quilt.h' line='62' column='1' id='type-id-186'/>
-    <!-- BezierArc* -->
-    <pointer-type-def type-id='type-id-208' size-in-bits='64' id='type-id-193'/>
-    <!-- GridTrimVertex* -->
-    <pointer-type-def type-id='type-id-209' size-in-bits='64' id='type-id-188'/>
-    <!-- Gridline* -->
-    <pointer-type-def type-id='type-id-203' size-in-bits='64' id='type-id-199'/>
-    <!-- Hull* -->
-    <pointer-type-def type-id='type-id-180' size-in-bits='64' id='type-id-201'/>
-    <!-- PwlArc* -->
-    <pointer-type-def type-id='type-id-210' size-in-bits='64' id='type-id-194'/>
-    <!-- Quiltspec* -->
-    <pointer-type-def type-id='type-id-189' size-in-bits='64' id='type-id-207'/>
-    <!-- REAL[5][5] -->
-    <array-type-def dimensions='2' type-id='type-id-1' size-in-bits='800' id='type-id-206'>
-      <!-- <anonymous range>[5] -->
-      <subrange length='5' type-id='type-id-3' id='type-id-190'/>
-      <!-- <anonymous range>[5] -->
-      <subrange length='5' type-id='type-id-3' id='type-id-190'/>
-    </array-type-def>
-    <!-- Sorter* -->
-    <pointer-type-def type-id='type-id-176' size-in-bits='64' id='type-id-202'/>
-    <!-- TrimRegion* -->
-    <pointer-type-def type-id='type-id-173' size-in-bits='64' id='type-id-205'/>
-    <!-- Trimline* -->
-    <pointer-type-def type-id='type-id-200' size-in-bits='64' id='type-id-198'/>
-    <!-- struct Gridline -->
-    <class-decl name='Gridline' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/gridline.h' line='39' column='1' id='type-id-203'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- long int Gridline::v -->
-        <var-decl name='v' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/gridline.h' line='40' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- REAL Gridline::vval -->
-        <var-decl name='vval' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/gridline.h' line='41' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- long int Gridline::vindex -->
-        <var-decl name='vindex' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/gridline.h' line='42' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- long int Gridline::ustart -->
-        <var-decl name='ustart' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/gridline.h' line='43' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- long int Gridline::uend -->
-        <var-decl name='uend' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/gridline.h' line='44' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- struct Quiltspec -->
-    <class-decl name='Quiltspec' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/quilt.h' line='51' column='1' id='type-id-189'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- int Quiltspec::stride -->
-        <var-decl name='stride' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/quilt.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- int Quiltspec::width -->
-        <var-decl name='width' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/quilt.h' line='53' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int Quiltspec::offset -->
-        <var-decl name='offset' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/quilt.h' line='54' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='96'>
-        <!-- int Quiltspec::order -->
-        <var-decl name='order' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/quilt.h' line='55' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int Quiltspec::index -->
-        <var-decl name='index' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/quilt.h' line='56' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int Quiltspec::bdry[2] -->
-        <var-decl name='bdry' type-id='type-id-211' visibility='default' filepath='libnurbs/internals/quilt.h' line='57' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='224'>
-        <!-- REAL Quiltspec::step_size -->
-        <var-decl name='step_size' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/quilt.h' line='58' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- Knot* Quiltspec::breakpoints -->
-        <var-decl name='breakpoints' type-id='type-id-212' visibility='default' filepath='libnurbs/internals/quilt.h' line='59' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- class Trimline -->
-    <class-decl name='Trimline' size-in-bits='832' visibility='default' filepath='libnurbs/internals/trimline.h' line='46' column='1' id='type-id-200'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- TrimVertex** Trimline::pts -->
-        <var-decl name='pts' type-id='type-id-130' visibility='default' filepath='libnurbs/internals/trimline.h' line='48' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- long int Trimline::numverts -->
-        <var-decl name='numverts' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/trimline.h' line='49' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- long int Trimline::i -->
-        <var-decl name='i' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/trimline.h' line='50' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='192'>
-        <!-- long int Trimline::size -->
-        <var-decl name='size' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/trimline.h' line='51' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='256'>
-        <!-- Jarcloc Trimline::jarcl -->
-        <var-decl name='jarcl' type-id='type-id-213' visibility='default' filepath='libnurbs/internals/trimline.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='448'>
-        <!-- TrimVertex Trimline::t -->
-        <var-decl name='t' type-id='type-id-172' visibility='default' filepath='libnurbs/internals/trimline.h' line='53' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='576'>
-        <!-- TrimVertex Trimline::b -->
-        <var-decl name='b' type-id='type-id-172' visibility='default' filepath='libnurbs/internals/trimline.h' line='53' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='704'>
-        <!-- TrimVertex* Trimline::tinterp -->
-        <var-decl name='tinterp' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/trimline.h' line='54' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='768'>
-        <!-- TrimVertex* Trimline::binterp -->
-        <var-decl name='binterp' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/trimline.h' line='54' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Trimline::Trimline() -->
-        <function-decl name='Trimline' filepath='libnurbs/internals/trimline.h' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Trimline*' -->
-          <parameter type-id='type-id-198' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Trimline::~Trimline(int) -->
-        <function-decl name='~Trimline' filepath='libnurbs/internals/trimline.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Trimline*' -->
-          <parameter type-id='type-id-198' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Uarray -->
-    <class-decl name='Uarray' size-in-bits='192' visibility='default' filepath='libnurbs/internals/uarray.h' line='44' column='1' id='type-id-204'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- long int Uarray::size -->
-        <var-decl name='size' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/uarray.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- long int Uarray::ulines -->
-        <var-decl name='ulines' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/uarray.h' line='47' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- REAL* Uarray::uarray -->
-        <var-decl name='uarray' type-id='type-id-16' visibility='default' filepath='libnurbs/internals/uarray.h' line='52' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Uarray::Uarray() -->
-        <function-decl name='Uarray' filepath='libnurbs/internals/uarray.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Uarray*' -->
-          <parameter type-id='type-id-214' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Uarray::~Uarray(int) -->
-        <function-decl name='~Uarray' filepath='libnurbs/internals/uarray.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Uarray*' -->
-          <parameter type-id='type-id-214' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct __jmp_buf_tag -->
-    <class-decl name='__jmp_buf_tag' size-in-bits='1600' is-struct='yes' visibility='default' filepath='/usr/include/setjmp.h' line='36' column='1' id='type-id-191'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- __jmp_buf __jmp_buf_tag::__jmpbuf -->
-        <var-decl name='__jmpbuf' type-id='type-id-215' visibility='default' filepath='/usr/include/setjmp.h' line='41' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='512'>
-        <!-- int __jmp_buf_tag::__mask_was_saved -->
-        <var-decl name='__mask_was_saved' type-id='type-id-11' visibility='default' filepath='/usr/include/setjmp.h' line='42' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='576'>
-        <!-- __sigset_t __jmp_buf_tag::__saved_mask -->
-        <var-decl name='__saved_mask' type-id='type-id-216' visibility='default' filepath='/usr/include/setjmp.h' line='43' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- enum arc_side -->
-    <enum-decl name='arc_side' filepath='libnurbs/internals/arc.h' line='52' column='1' id='type-id-195'>
-      <underlying-type type-id='type-id-9'/>
-      <enumerator name='arc_none' value='0'/>
-      <enumerator name='arc_right' value='1'/>
-      <enumerator name='arc_top' value='2'/>
-      <enumerator name='arc_left' value='3'/>
-      <enumerator name='arc_bottom' value='4'/>
-    </enum-decl>
-    <!-- typedef __anonymous_struct__ PFVS -->
-    <typedef-decl name='PFVS' type-id='type-id-217' filepath='libnurbs/internals/displaylist.h' line='46' column='1' id='type-id-196'/>
-    <!-- Knot* -->
-    <pointer-type-def type-id='type-id-218' size-in-bits='64' id='type-id-212'/>
-    <!-- Uarray* -->
-    <pointer-type-def type-id='type-id-204' size-in-bits='64' id='type-id-214'/>
-    <!-- struct BezierArc -->
-    <class-decl name='BezierArc' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-208'/>
-    <!-- class GridTrimVertex -->
-    <class-decl name='GridTrimVertex' size-in-bits='384' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='45' column='1' id='type-id-209'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- TrimVertex GridTrimVertex::dummyt -->
-        <var-decl name='dummyt' type-id='type-id-172' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='47' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- GridVertex GridTrimVertex::dummyg -->
-        <var-decl name='dummyg' type-id='type-id-219' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='48' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='256'>
-        <!-- TrimVertex* GridTrimVertex::t -->
-        <var-decl name='t' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='51' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='320'>
-        <!-- GridVertex* GridTrimVertex::g -->
-        <var-decl name='g' type-id='type-id-220' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='52' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- GridTrimVertex::GridTrimVertex() -->
-        <function-decl name='GridTrimVertex' filepath='libnurbs/internals/gridtrimvertex.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GridTrimVertex*' -->
-          <parameter type-id='type-id-188' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Jarcloc -->
-    <class-decl name='Jarcloc' size-in-bits='192' visibility='default' filepath='libnurbs/internals/jarcloc.h' line='41' column='1' id='type-id-213'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Arc_ptr Jarcloc::arc -->
-        <var-decl name='arc' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/jarcloc.h' line='43' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- TrimVertex* Jarcloc::p -->
-        <var-decl name='p' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/jarcloc.h' line='44' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- TrimVertex* Jarcloc::plast -->
-        <var-decl name='plast' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/jarcloc.h' line='45' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- class PwlArc -->
-    <class-decl name='PwlArc' size-in-bits='192' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='44' column='1' id='type-id-210'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- TrimVertex* PwlArc::pts -->
-        <var-decl name='pts' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- int PwlArc::npts -->
-        <var-decl name='npts' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='47' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- long int PwlArc::type -->
-        <var-decl name='type' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='48' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc() -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-194' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-194' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-141'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
-        <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-194' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-141'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct {void (NurbsTessellator*, void*)* __pfn; long int __delta;} -->
-    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-196' visibility='default' filepath='libnurbs/internals/displaylist.h' line='46' column='1' id='type-id-217'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- void (NurbsTessellator*, void*)* __pfn -->
-        <var-decl name='__pfn' type-id='type-id-221' visibility='default' filepath='libnurbs/internals/displaylist.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- long int __delta -->
-        <var-decl name='__delta' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/displaylist.h' line='46' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- int[2] -->
-    <array-type-def dimensions='1' type-id='type-id-11' size-in-bits='64' id='type-id-211'>
-      <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
-    </array-type-def>
-    <!-- typedef long int[8] __jmp_buf -->
-    <typedef-decl name='__jmp_buf' type-id='type-id-222' filepath='/usr/include/bits/setjmp.h' line='32' column='1' id='type-id-215'/>
-    <!-- typedef __anonymous_struct__2 __sigset_t -->
-    <typedef-decl name='__sigset_t' type-id='type-id-223' filepath='/usr/include/bits/sigset.h' line='32' column='1' id='type-id-216'/>
-    <!-- GridVertex* -->
-    <pointer-type-def type-id='type-id-219' size-in-bits='64' id='type-id-220'/>
-    <!-- struct GridVertex -->
-    <class-decl name='GridVertex' size-in-bits='128' is-struct='yes' visibility='default' filepath='libnurbs/internals/gridvertex.h' line='39' column='1' id='type-id-219'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- long int GridVertex::gparam[2] -->
-        <var-decl name='gparam' type-id='type-id-165' visibility='default' filepath='libnurbs/internals/gridvertex.h' line='40' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- GridVertex::GridVertex() -->
-        <function-decl name='GridVertex' filepath='libnurbs/internals/gridvertex.h' line='41' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GridVertex*' -->
-          <parameter type-id='type-id-220' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- GridVertex::GridVertex(long int, long int) -->
-        <function-decl name='GridVertex' filepath='libnurbs/internals/gridvertex.h' line='42' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GridVertex*' -->
-          <parameter type-id='type-id-220' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct {unsigned long int __val[16];} -->
-    <class-decl name='__anonymous_struct__2' size-in-bits='1024' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-216' visibility='default' filepath='/usr/include/bits/sigset.h' line='30' column='1' id='type-id-223'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- unsigned long int __val[16] -->
-        <var-decl name='__val' type-id='type-id-224' visibility='default' filepath='/usr/include/bits/sigset.h' line='31' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- long int[8] -->
-    <array-type-def dimensions='1' type-id='type-id-15' size-in-bits='512' id='type-id-222'>
-      <!-- <anonymous range>[8] -->
-      <subrange length='8' type-id='type-id-3' id='type-id-225'/>
-    </array-type-def>
-    <!-- typedef REAL Knot -->
-    <typedef-decl name='Knot' type-id='type-id-1' filepath='libnurbs/internals/types.h' line='45' column='1' id='type-id-218'/>
-    <!-- void (NurbsTessellator*, void*)* -->
-    <pointer-type-def type-id='type-id-226' size-in-bits='64' id='type-id-221'/>
-    <!-- unsigned long int[16] -->
-    <array-type-def dimensions='1' type-id='type-id-3' size-in-bits='1024' id='type-id-224'>
-      <!-- <anonymous range>[16] -->
-      <subrange length='16' type-id='type-id-3' id='type-id-227'/>
-    </array-type-def>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/interface/glrenderer.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- GLfloat[4] -->
-    <array-type-def dimensions='1' type-id='type-id-32' size-in-bits='128' id='type-id-228'>
+    <array-type-def dimensions='1' type-id='type-id-23' size-in-bits='128' id='type-id-60'>
       <!-- <anonymous range>[4] -->
-      <subrange length='4' type-id='type-id-3' id='type-id-65'/>
+      <subrange length='4' type-id='type-id-3' id='type-id-61'/>
     </array-type-def>
     <!-- typedef void (typedef GLenum)* errorCallbackType -->
-    <typedef-decl name='errorCallbackType' type-id='type-id-19' filepath='libnurbs/interface/glrenderer.h' line='46' column='1' id='type-id-44'/>
+    <typedef-decl name='errorCallbackType' type-id='type-id-31' filepath='libnurbs/interface/glrenderer.h' line='46' column='1' id='type-id-41'/>
+    <!-- GLfloat[4]* -->
+    <pointer-type-def type-id='type-id-60' size-in-bits='64' id='type-id-46'/>
     <!-- class NurbsTessellator -->
-    <class-decl name='NurbsTessellator' size-in-bits='47616' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='53' column='1' id='type-id-43'>
+    <class-decl name='NurbsTessellator' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='53' column='1' is-declaration-only='yes' id='type-id-40'>
       <data-member access='protected' layout-offset-in-bits='64'>
         <!-- Renderhints NurbsTessellator::renderhints -->
-        <var-decl name='renderhints' type-id='type-id-71' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='104' column='1'/>
+        <var-decl name='renderhints' type-id='type-id-62' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='104' column='1'/>
       </data-member>
       <data-member access='protected' layout-offset-in-bits='320'>
         <!-- Maplist NurbsTessellator::maplist -->
-        <var-decl name='maplist' type-id='type-id-72' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='105' column='1'/>
+        <var-decl name='maplist' type-id='type-id-63' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='105' column='1'/>
       </data-member>
       <data-member access='protected' layout-offset-in-bits='3008'>
         <!-- Backend NurbsTessellator::backend -->
-        <var-decl name='backend' type-id='type-id-73' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='106' column='1'/>
+        <var-decl name='backend' type-id='type-id-64' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='106' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='3648'>
         <!-- Subdivider NurbsTessellator::subdivider -->
-        <var-decl name='subdivider' type-id='type-id-74' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='134' column='1'/>
+        <var-decl name='subdivider' type-id='type-id-65' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='134' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='24064'>
         <!-- JumpBuffer* NurbsTessellator::jumpbuffer -->
-        <var-decl name='jumpbuffer' type-id='type-id-75' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='135' column='1'/>
+        <var-decl name='jumpbuffer' type-id='type-id-66' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='135' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='24128'>
         <!-- Pool NurbsTessellator::o_pwlcurvePool -->
-        <var-decl name='o_pwlcurvePool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='136' column='1'/>
+        <var-decl name='o_pwlcurvePool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='136' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='26624'>
         <!-- Pool NurbsTessellator::o_nurbscurvePool -->
-        <var-decl name='o_nurbscurvePool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='137' column='1'/>
+        <var-decl name='o_nurbscurvePool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='137' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='29120'>
         <!-- Pool NurbsTessellator::o_curvePool -->
-        <var-decl name='o_curvePool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='138' column='1'/>
+        <var-decl name='o_curvePool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='138' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='31616'>
         <!-- Pool NurbsTessellator::o_trimPool -->
-        <var-decl name='o_trimPool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='139' column='1'/>
+        <var-decl name='o_trimPool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='139' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='34112'>
         <!-- Pool NurbsTessellator::o_surfacePool -->
-        <var-decl name='o_surfacePool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='140' column='1'/>
+        <var-decl name='o_surfacePool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='140' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='36608'>
         <!-- Pool NurbsTessellator::o_nurbssurfacePool -->
-        <var-decl name='o_nurbssurfacePool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='141' column='1'/>
+        <var-decl name='o_nurbssurfacePool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='141' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='39104'>
         <!-- Pool NurbsTessellator::propertyPool -->
-        <var-decl name='propertyPool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='142' column='1'/>
+        <var-decl name='propertyPool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='142' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='41600'>
         <!-- Pool NurbsTessellator::quiltPool -->
-        <var-decl name='quiltPool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='144' column='1'/>
+        <var-decl name='quiltPool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='144' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='44096'>
         <!-- TrimVertexPool NurbsTessellator::extTrimVertexPool -->
-        <var-decl name='extTrimVertexPool' type-id='type-id-77' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='146' column='1'/>
+        <var-decl name='extTrimVertexPool' type-id='type-id-68' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='146' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='46720'>
         <!-- int NurbsTessellator::inSurface -->
-        <var-decl name='inSurface' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='148' column='1'/>
+        <var-decl name='inSurface' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='148' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='46752'>
         <!-- int NurbsTessellator::inCurve -->
-        <var-decl name='inCurve' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='149' column='1'/>
+        <var-decl name='inCurve' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='149' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='46784'>
         <!-- int NurbsTessellator::inTrim -->
-        <var-decl name='inTrim' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='150' column='1'/>
+        <var-decl name='inTrim' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='150' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='46816'>
         <!-- int NurbsTessellator::isCurveModified -->
-        <var-decl name='isCurveModified' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='151' column='1'/>
+        <var-decl name='isCurveModified' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='151' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='46848'>
         <!-- int NurbsTessellator::isTrimModified -->
-        <var-decl name='isTrimModified' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='152' column='1'/>
+        <var-decl name='isTrimModified' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='152' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='46880'>
         <!-- int NurbsTessellator::isSurfaceModified -->
-        <var-decl name='isSurfaceModified' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='153' column='1'/>
+        <var-decl name='isSurfaceModified' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='153' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='46912'>
         <!-- int NurbsTessellator::isDataValid -->
-        <var-decl name='isDataValid' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='154' column='1'/>
+        <var-decl name='isDataValid' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='154' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='46944'>
         <!-- int NurbsTessellator::numTrims -->
-        <var-decl name='numTrims' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='155' column='1'/>
+        <var-decl name='numTrims' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='155' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='46976'>
         <!-- int NurbsTessellator::playBack -->
-        <var-decl name='playBack' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='156' column='1'/>
+        <var-decl name='playBack' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='156' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='47040'>
         <!-- O_trim** NurbsTessellator::nextTrim -->
-        <var-decl name='nextTrim' type-id='type-id-78' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='158' column='1'/>
+        <var-decl name='nextTrim' type-id='type-id-69' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='158' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='47104'>
         <!-- O_curve** NurbsTessellator::nextCurve -->
-        <var-decl name='nextCurve' type-id='type-id-79' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='159' column='1'/>
+        <var-decl name='nextCurve' type-id='type-id-70' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='159' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='47168'>
         <!-- O_nurbscurve** NurbsTessellator::nextNurbscurve -->
-        <var-decl name='nextNurbscurve' type-id='type-id-80' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='160' column='1'/>
+        <var-decl name='nextNurbscurve' type-id='type-id-71' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='160' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='47232'>
         <!-- O_pwlcurve** NurbsTessellator::nextPwlcurve -->
-        <var-decl name='nextPwlcurve' type-id='type-id-81' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='161' column='1'/>
+        <var-decl name='nextPwlcurve' type-id='type-id-72' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='161' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='47296'>
         <!-- O_nurbssurface** NurbsTessellator::nextNurbssurface -->
-        <var-decl name='nextNurbssurface' type-id='type-id-82' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='162' column='1'/>
+        <var-decl name='nextNurbssurface' type-id='type-id-73' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='162' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='47360'>
         <!-- O_surface* NurbsTessellator::currentSurface -->
-        <var-decl name='currentSurface' type-id='type-id-83' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='164' column='1'/>
+        <var-decl name='currentSurface' type-id='type-id-74' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='164' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='47424'>
         <!-- O_trim* NurbsTessellator::currentTrim -->
-        <var-decl name='currentTrim' type-id='type-id-84' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='165' column='1'/>
+        <var-decl name='currentTrim' type-id='type-id-75' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='165' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='47488'>
         <!-- O_curve* NurbsTessellator::currentCurve -->
-        <var-decl name='currentCurve' type-id='type-id-85' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='166' column='1'/>
+        <var-decl name='currentCurve' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='166' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='47552'>
         <!-- DisplayList* NurbsTessellator::dl -->
-        <var-decl name='dl' type-id='type-id-86' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='168' column='1'/>
+        <var-decl name='dl' type-id='type-id-77' visibility='default' filepath='libnurbs/internals/nurbstess.h' line='168' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- NurbsTessellator::NurbsTessellator(BasicCurveEvaluator&, BasicSurfaceEvaluator&) -->
         <function-decl name='NurbsTessellator' filepath='libnurbs/internals/nurbsinterfac.cc' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
+          <parameter type-id='type-id-78' is-artificial='yes'/>
           <!-- parameter of type 'BasicCurveEvaluator&' -->
-          <parameter type-id='type-id-88'/>
+          <parameter type-id='type-id-79'/>
           <!-- parameter of type 'BasicSurfaceEvaluator&' -->
-          <parameter type-id='type-id-89'/>
+          <parameter type-id='type-id-80'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::playRecording(void*) -->
+        <function-decl name='playRecording' mangled-name='_ZN16NurbsTessellator13playRecordingEPv' filepath='libnurbs/internals/nurbsinterfac.cc' line='529' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::endRecording() -->
+        <function-decl name='endRecording' mangled-name='_ZN16NurbsTessellator12endRecordingEv' filepath='libnurbs/internals/nurbsinterfac.cc' line='522' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void* NurbsTessellator::beginRecording() -->
+        <function-decl name='beginRecording' mangled-name='_ZN16NurbsTessellator14beginRecordingEv' filepath='libnurbs/internals/nurbsinterfac.cc' line='515' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- void* -->
+          <return type-id='type-id-35'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::discardRecording(void*) -->
+        <function-decl name='discardRecording' mangled-name='_ZN16NurbsTessellator16discardRecordingEPv' filepath='libnurbs/internals/nurbsinterfac.cc' line='509' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::defineMap(long int, long int, long int) -->
+        <function-decl name='defineMap' mangled-name='_ZN16NurbsTessellator9defineMapElll' filepath='libnurbs/internals/nurbsinterfac.cc' line='503' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::redefineMaps() -->
+        <function-decl name='redefineMaps' mangled-name='_ZN16NurbsTessellator12redefineMapsEv' filepath='libnurbs/internals/nurbsinterfac.cc' line='497' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::setnurbsproperty(long int, long int, float*, long int, long int) -->
+        <function-decl name='setnurbsproperty' mangled-name='_ZN16NurbsTessellator16setnurbspropertyEllPfll' filepath='libnurbs/internals/nurbsinterfac.cc' line='474' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::setnurbsproperty(long int, long int, float*) -->
+        <function-decl name='setnurbsproperty' mangled-name='_ZN16NurbsTessellator16setnurbspropertyEllPf' filepath='libnurbs/internals/nurbsinterfac.cc' line='451' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::getnurbsproperty(long int, long int, float*) -->
+        <function-decl name='getnurbsproperty' mangled-name='_ZN16NurbsTessellator16getnurbspropertyEllPf' filepath='libnurbs/internals/nurbsinterfac.cc' line='431' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::getnurbsproperty(long int, float*) -->
+        <function-decl name='getnurbsproperty' mangled-name='_ZN16NurbsTessellator16getnurbspropertyElPf' filepath='libnurbs/internals/nurbsinterfac.cc' line='415' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::endtrim() -->
+        <function-decl name='endtrim' mangled-name='_ZN16NurbsTessellator7endtrimEv' filepath='libnurbs/internals/nurbsinterfac.cc' line='179' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::endsurface() -->
+        <function-decl name='endsurface' mangled-name='_ZN16NurbsTessellator10endsurfaceEv' filepath='libnurbs/internals/nurbsinterfac.cc' line='153' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::endcurve() -->
+        <function-decl name='endcurve' mangled-name='_ZN16NurbsTessellator8endcurveEv' filepath='libnurbs/internals/nurbsinterfac.cc' line='141' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::bgnsurface(long int) -->
+        <function-decl name='bgnsurface' mangled-name='_ZN16NurbsTessellator10bgnsurfaceEl' filepath='libnurbs/internals/nurbsinterfac.cc' line='113' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::bgntrim() -->
+        <function-decl name='bgntrim' mangled-name='_ZN16NurbsTessellator7bgntrimEv' filepath='libnurbs/internals/nurbsinterfac.cc' line='166' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::bgncurve(long int) -->
+        <function-decl name='bgncurve' mangled-name='_ZN16NurbsTessellator8bgncurveEl' filepath='libnurbs/internals/nurbsinterfac.cc' line='127' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::setnurbsproperty(long int, float) -->
+        <function-decl name='setnurbsproperty' mangled-name='_ZN16NurbsTessellator16setnurbspropertyElf' filepath='libnurbs/internals/nurbsinterfac.cc' line='373' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float' -->
+          <parameter type-id='type-id-15'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::pwlcurve(long int, float*, long int, long int) -->
+        <function-decl name='pwlcurve' mangled-name='_ZN16NurbsTessellator8pwlcurveElPfll' filepath='libnurbs/internals/nurbsinterfac.cc' line='197' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::setnurbsproperty(long int, long int, float) -->
+        <function-decl name='setnurbsproperty' mangled-name='_ZN16NurbsTessellator16setnurbspropertyEllf' filepath='libnurbs/internals/nurbsinterfac.cc' line='389' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float' -->
+          <parameter type-id='type-id-15'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::nurbscurve(long int, float*, long int, float*, long int, long int) -->
+        <function-decl name='nurbscurve' mangled-name='_ZN16NurbsTessellator10nurbscurveElPflS0_ll' filepath='libnurbs/internals/nurbsinterfac.cc' line='269' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::nurbssurface(long int, float*, long int, float*, long int, long int, float*, long int, long int, long int) -->
+        <function-decl name='nurbssurface' mangled-name='_ZN16NurbsTessellator12nurbssurfaceElPflS0_llS0_lll' filepath='libnurbs/internals/nurbsinterfac.cc' line='318' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_freenurbsproperty(Property*) -->
+        <function-decl name='do_freenurbsproperty' mangled-name='_ZN16NurbsTessellator20do_freenurbspropertyEP8Property' filepath='libnurbs/internals/nurbstess.cc' line='636' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'Property*' -->
+          <parameter type-id='type-id-81'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_freepwlcurve(O_pwlcurve*) -->
+        <function-decl name='do_freepwlcurve' mangled-name='_ZN16NurbsTessellator15do_freepwlcurveEP10O_pwlcurve' filepath='libnurbs/internals/nurbstess.cc' line='450' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_pwlcurve*' -->
+          <parameter type-id='type-id-82'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_freebgncurve(O_curve*) -->
+        <function-decl name='do_freebgncurve' mangled-name='_ZN16NurbsTessellator15do_freebgncurveEP7O_curve' filepath='libnurbs/internals/nurbstess.cc' line='456' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_curve*' -->
+          <parameter type-id='type-id-76'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_freebgntrim(O_trim*) -->
+        <function-decl name='do_freebgntrim' mangled-name='_ZN16NurbsTessellator14do_freebgntrimEP6O_trim' filepath='libnurbs/internals/nurbstess.cc' line='376' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_trim*' -->
+          <parameter type-id='type-id-75'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_freebgnsurface(O_surface*) -->
+        <function-decl name='do_freebgnsurface' mangled-name='_ZN16NurbsTessellator17do_freebgnsurfaceEP9O_surface' filepath='libnurbs/internals/nurbstess.cc' line='115' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_surface*' -->
+          <parameter type-id='type-id-74'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::resetObjects() -->
+        <function-decl name='resetObjects' mangled-name='_ZN16NurbsTessellator12resetObjectsEv' filepath='libnurbs/internals/nurbstess.cc' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::set_domain_distance_u_rate(REAL) -->
+        <function-decl name='set_domain_distance_u_rate' mangled-name='_ZN16NurbsTessellator26set_domain_distance_u_rateEf' filepath='libnurbs/internals/nurbstess.cc' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::set_domain_distance_v_rate(REAL) -->
+        <function-decl name='set_domain_distance_v_rate' mangled-name='_ZN16NurbsTessellator26set_domain_distance_v_rateEf' filepath='libnurbs/internals/nurbstess.cc' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::set_is_domain_distance_sampling(int) -->
+        <function-decl name='set_is_domain_distance_sampling' mangled-name='_ZN16NurbsTessellator31set_is_domain_distance_samplingEi' filepath='libnurbs/internals/nurbstess.cc' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_nurbserror(int) -->
+        <function-decl name='do_nurbserror' mangled-name='_ZN16NurbsTessellator13do_nurbserrorEi' filepath='libnurbs/internals/nurbstess.cc' line='672' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_endtrim() -->
+        <function-decl name='do_endtrim' mangled-name='_ZN16NurbsTessellator10do_endtrimEv' filepath='libnurbs/internals/nurbstess.cc' line='422' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int NurbsTessellator::do_check_knots(Knotvector*, const char*) -->
+        <function-decl name='do_check_knots' mangled-name='_ZN16NurbsTessellator14do_check_knotsEP10KnotvectorPKc' filepath='libnurbs/internals/nurbstess.cc' line='678' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'Knotvector*' -->
+          <parameter type-id='type-id-83'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-84'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_setnurbsproperty2(Property*) -->
+        <function-decl name='do_setnurbsproperty2' mangled-name='_ZN16NurbsTessellator20do_setnurbsproperty2EP8Property' filepath='libnurbs/internals/nurbstess.cc' line='657' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'Property*' -->
+          <parameter type-id='type-id-81'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_setnurbsproperty(Property*) -->
+        <function-decl name='do_setnurbsproperty' mangled-name='_ZN16NurbsTessellator19do_setnurbspropertyEP8Property' filepath='libnurbs/internals/nurbstess.cc' line='649' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'Property*' -->
+          <parameter type-id='type-id-81'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_nurbssurface(O_nurbssurface*) -->
+        <function-decl name='do_nurbssurface' mangled-name='_ZN16NurbsTessellator15do_nurbssurfaceEP14O_nurbssurface' filepath='libnurbs/internals/nurbstess.cc' line='598' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_nurbssurface*' -->
+          <parameter type-id='type-id-85'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_bgnsurface(O_surface*) -->
+        <function-decl name='do_bgnsurface' mangled-name='_ZN16NurbsTessellator13do_bgnsurfaceEP9O_surface' filepath='libnurbs/internals/nurbstess.cc' line='128' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_surface*' -->
+          <parameter type-id='type-id-74'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_freenurbssurface(O_nurbssurface*) -->
+        <function-decl name='do_freenurbssurface' mangled-name='_ZN16NurbsTessellator19do_freenurbssurfaceEP14O_nurbssurface' filepath='libnurbs/internals/nurbstess.cc' line='585' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_nurbssurface*' -->
+          <parameter type-id='type-id-85'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_freenurbscurve(O_nurbscurve*) -->
+        <function-decl name='do_freenurbscurve' mangled-name='_ZN16NurbsTessellator17do_freenurbscurveEP12O_nurbscurve' filepath='libnurbs/internals/nurbstess.cc' line='520' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_nurbscurve*' -->
+          <parameter type-id='type-id-86'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_freecurveall(O_curve*) -->
+        <function-decl name='do_freecurveall' mangled-name='_ZN16NurbsTessellator15do_freecurveallEP7O_curve' filepath='libnurbs/internals/nurbstess.cc' line='341' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_curve*' -->
+          <parameter type-id='type-id-76'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_freeall() -->
+        <function-decl name='do_freeall' mangled-name='_ZN16NurbsTessellator10do_freeallEv' filepath='libnurbs/internals/nurbstess.cc' line='315' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_nurbscurve(O_nurbscurve*) -->
+        <function-decl name='do_nurbscurve' mangled-name='_ZN16NurbsTessellator13do_nurbscurveEP12O_nurbscurve' filepath='libnurbs/internals/nurbstess.cc' line='534' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_nurbscurve*' -->
+          <parameter type-id='type-id-86'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_pwlcurve(O_pwlcurve*) -->
+        <function-decl name='do_pwlcurve' mangled-name='_ZN16NurbsTessellator11do_pwlcurveEP10O_pwlcurve' filepath='libnurbs/internals/nurbstess.cc' line='468' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_pwlcurve*' -->
+          <parameter type-id='type-id-82'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_bgncurve(O_curve*) -->
+        <function-decl name='do_bgncurve' mangled-name='_ZN16NurbsTessellator11do_bgncurveEP7O_curve' filepath='libnurbs/internals/nurbstess.cc' line='154' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_curve*' -->
+          <parameter type-id='type-id-76'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_bgntrim(O_trim*) -->
+        <function-decl name='do_bgntrim' mangled-name='_ZN16NurbsTessellator10do_bgntrimEP6O_trim' filepath='libnurbs/internals/nurbstess.cc' line='389' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- parameter of type 'O_trim*' -->
+          <parameter type-id='type-id-75'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_endsurface() -->
+        <function-decl name='do_endsurface' mangled-name='_ZN16NurbsTessellator13do_endsurfaceEv' filepath='libnurbs/internals/nurbstess.cc' line='239' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void NurbsTessellator::do_endcurve() -->
+        <function-decl name='do_endcurve' mangled-name='_ZN16NurbsTessellator11do_endcurveEv' filepath='libnurbs/internals/nurbstess.cc' line='187' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'NurbsTessellator*' -->
+          <parameter type-id='type-id-78' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes' vtable-offset='-1'>
         <!-- NurbsTessellator::~NurbsTessellator(int) -->
         <function-decl name='~NurbsTessellator' filepath='libnurbs/internals/nurbsinterfac.cc' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
+          <parameter type-id='type-id-78' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='2'>
         <!-- void NurbsTessellator::bgnrender() -->
         <function-decl name='bgnrender' mangled-name='_ZN16NurbsTessellator9bgnrenderEv' filepath='libnurbs/internals/nurbstess.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
+          <parameter type-id='type-id-78' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='3'>
         <!-- void NurbsTessellator::endrender() -->
         <function-decl name='endrender' mangled-name='_ZN16NurbsTessellator9endrenderEv' filepath='libnurbs/internals/nurbstess.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
+          <parameter type-id='type-id-78' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='4'>
         <!-- void NurbsTessellator::makeobj(int) -->
         <function-decl name='makeobj' mangled-name='_ZN16NurbsTessellator7makeobjEi' filepath='libnurbs/internals/nurbstess.h' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
+          <parameter type-id='type-id-78' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='5'>
         <!-- void NurbsTessellator::closeobj() -->
         <function-decl name='closeobj' mangled-name='_ZN16NurbsTessellator8closeobjEv' filepath='libnurbs/internals/nurbstess.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
+          <parameter type-id='type-id-78' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='6'>
         <!-- void NurbsTessellator::errorHandler(int) -->
         <function-decl name='errorHandler' mangled-name='_ZN16NurbsTessellator12errorHandlerEi' filepath='libnurbs/internals/nurbstess.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87' is-artificial='yes'/>
+          <parameter type-id='type-id-78' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- GLfloat[4]* -->
-    <pointer-type-def type-id='type-id-228' size-in-bits='64' id='type-id-229'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/interface/glsurfeval.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- GLint[2] -->
-    <array-type-def dimensions='1' type-id='type-id-63' size-in-bits='64' id='type-id-50'>
+    <array-type-def dimensions='1' type-id='type-id-50' size-in-bits='64' id='type-id-53'>
       <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
+      <subrange length='2' type-id='type-id-3' id='type-id-87'/>
     </array-type-def>
     <!-- REAL[2] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='64' id='type-id-164'>
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='64' id='type-id-88'>
       <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
+      <subrange length='2' type-id='type-id-3' id='type-id-87'/>
     </array-type-def>
     <!-- REAL[3] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='96' id='type-id-230'>
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='96' id='type-id-89'>
       <!-- <anonymous range>[3] -->
-      <subrange length='3' type-id='type-id-3' id='type-id-68'/>
+      <subrange length='3' type-id='type-id-3' id='type-id-90'/>
     </array-type-def>
     <!-- REAL[40][4] -->
-    <array-type-def dimensions='2' type-id='type-id-1' size-in-bits='5120' id='type-id-52'>
+    <array-type-def dimensions='2' type-id='type-id-1' size-in-bits='5120' id='type-id-55'>
       <!-- <anonymous range>[40] -->
       <subrange length='40' type-id='type-id-3' id='type-id-6'/>
       <!-- <anonymous range>[4] -->
-      <subrange length='4' type-id='type-id-3' id='type-id-65'/>
+      <subrange length='4' type-id='type-id-3' id='type-id-61'/>
     </array-type-def>
     <!-- REAL[6400] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='204800' id='type-id-53'>
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='204800' id='type-id-56'>
       <!-- <anonymous range>[6400] -->
-      <subrange length='6400' type-id='type-id-3' id='type-id-66'/>
+      <subrange length='6400' type-id='type-id-3' id='type-id-91'/>
     </array-type-def>
     <!-- StoredVertex*[3] -->
-    <array-type-def dimensions='1' type-id='type-id-67' size-in-bits='192' id='type-id-49'>
+    <array-type-def dimensions='1' type-id='type-id-92' size-in-bits='192' id='type-id-52'>
       <!-- <anonymous range>[3] -->
-      <subrange length='3' type-id='type-id-3' id='type-id-68'/>
+      <subrange length='3' type-id='type-id-3' id='type-id-90'/>
     </array-type-def>
     <!-- long int[2] -->
-    <array-type-def dimensions='1' type-id='type-id-15' size-in-bits='128' id='type-id-165'>
+    <array-type-def dimensions='1' type-id='type-id-38' size-in-bits='128' id='type-id-93'>
       <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
+      <subrange length='2' type-id='type-id-3' id='type-id-87'/>
     </array-type-def>
-    <!-- class StoredVertex -->
-    <class-decl name='StoredVertex' size-in-bits='256' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='84' column='1' id='type-id-102'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- int StoredVertex::type -->
-        <var-decl name='type' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='95' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='32'>
-        <!-- REAL StoredVertex::coord[2] -->
-        <var-decl name='coord' type-id='type-id-164' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='96' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- long int StoredVertex::point[2] -->
-        <var-decl name='point' type-id='type-id-165' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='97' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- StoredVertex::StoredVertex() -->
-        <function-decl name='StoredVertex' filepath='libnurbs/interface/glsurfeval.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'StoredVertex*' -->
-          <parameter type-id='type-id-67' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- StoredVertex::~StoredVertex(int) -->
-        <function-decl name='~StoredVertex' filepath='libnurbs/interface/glsurfeval.h' line='87' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'StoredVertex*' -->
-          <parameter type-id='type-id-67' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct BasicSurfaceEvaluator -->
-    <class-decl name='BasicSurfaceEvaluator' size-in-bits='64' is-struct='yes' visibility='default' filepath='libnurbs/internals/basicsurfeval.h' line='43' column='1' id='type-id-48'>
-      <!-- class CachingEvaluator -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-7'/>
-      <member-function access='public' destructor='yes' vtable-offset='-1'>
-        <!-- BasicSurfaceEvaluator::~BasicSurfaceEvaluator(int) -->
-        <function-decl name='~BasicSurfaceEvaluator' filepath='libnurbs/internals/basicsurfeval.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='9'>
-        <!-- void BasicSurfaceEvaluator::range2f(long int, REAL*, REAL*) -->
-        <function-decl name='range2f' mangled-name='_ZN21BasicSurfaceEvaluator7range2fElPfS0_' filepath='libnurbs/internals/basicsurfeval.cc' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='10'>
-        <!-- void BasicSurfaceEvaluator::domain2f(REAL, REAL, REAL, REAL) -->
-        <function-decl name='domain2f' mangled-name='_ZN21BasicSurfaceEvaluator8domain2fEffff' filepath='libnurbs/internals/basicsurfeval.cc' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='11'>
-        <!-- void BasicSurfaceEvaluator::enable(long int) -->
-        <function-decl name='enable' mangled-name='_ZN21BasicSurfaceEvaluator6enableEl' filepath='libnurbs/internals/basicsurfeval.cc' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='12'>
-        <!-- void BasicSurfaceEvaluator::disable(long int) -->
-        <function-decl name='disable' mangled-name='_ZN21BasicSurfaceEvaluator7disableEl' filepath='libnurbs/internals/basicsurfeval.cc' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='13'>
-        <!-- void BasicSurfaceEvaluator::bgnmap2f(long int) -->
-        <function-decl name='bgnmap2f' mangled-name='_ZN21BasicSurfaceEvaluator8bgnmap2fEl' filepath='libnurbs/internals/basicsurfeval.cc' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='14'>
-        <!-- void BasicSurfaceEvaluator::map2f(long int, REAL, REAL, long int, long int, REAL, REAL, long int, long int, REAL*) -->
-        <function-decl name='map2f' mangled-name='_ZN21BasicSurfaceEvaluator5map2fElffllffllPf' filepath='libnurbs/internals/basicsurfeval.cc' line='106' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='15'>
-        <!-- void BasicSurfaceEvaluator::mapgrid2f(long int, REAL, REAL, long int, REAL, REAL) -->
-        <function-decl name='mapgrid2f' mangled-name='_ZN21BasicSurfaceEvaluator9mapgrid2fElfflff' filepath='libnurbs/internals/basicsurfeval.cc' line='116' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='16'>
-        <!-- void BasicSurfaceEvaluator::mapmesh2f(long int, long int, long int, long int, long int) -->
-        <function-decl name='mapmesh2f' mangled-name='_ZN21BasicSurfaceEvaluator9mapmesh2fElllll' filepath='libnurbs/internals/basicsurfeval.cc' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='17'>
-        <!-- void BasicSurfaceEvaluator::evalcoord2f(long int, REAL, REAL) -->
-        <function-decl name='evalcoord2f' mangled-name='_ZN21BasicSurfaceEvaluator11evalcoord2fElff' filepath='libnurbs/internals/basicsurfeval.cc' line='132' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='18'>
-        <!-- void BasicSurfaceEvaluator::evalpoint2i(long int, long int) -->
-        <function-decl name='evalpoint2i' mangled-name='_ZN21BasicSurfaceEvaluator11evalpoint2iEll' filepath='libnurbs/internals/basicsurfeval.cc' line='140' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='19'>
-        <!-- void BasicSurfaceEvaluator::endmap2f() -->
-        <function-decl name='endmap2f' mangled-name='_ZN21BasicSurfaceEvaluator8endmap2fEv' filepath='libnurbs/internals/basicsurfeval.cc' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='20'>
-        <!-- void BasicSurfaceEvaluator::polymode(long int) -->
-        <function-decl name='polymode' mangled-name='_ZN21BasicSurfaceEvaluator8polymodeEl' filepath='libnurbs/internals/basicsurfeval.cc' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='21'>
-        <!-- void BasicSurfaceEvaluator::bgnline() -->
-        <function-decl name='bgnline' mangled-name='_ZN21BasicSurfaceEvaluator7bgnlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='148' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='22'>
-        <!-- void BasicSurfaceEvaluator::endline() -->
-        <function-decl name='endline' mangled-name='_ZN21BasicSurfaceEvaluator7endlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='156' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='23'>
-        <!-- void BasicSurfaceEvaluator::bgnclosedline() -->
-        <function-decl name='bgnclosedline' mangled-name='_ZN21BasicSurfaceEvaluator13bgnclosedlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='164' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='24'>
-        <!-- void BasicSurfaceEvaluator::endclosedline() -->
-        <function-decl name='endclosedline' mangled-name='_ZN21BasicSurfaceEvaluator13endclosedlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='172' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='25'>
-        <!-- void BasicSurfaceEvaluator::bgntmesh() -->
-        <function-decl name='bgntmesh' mangled-name='_ZN21BasicSurfaceEvaluator8bgntmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='194' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='26'>
-        <!-- void BasicSurfaceEvaluator::swaptmesh() -->
-        <function-decl name='swaptmesh' mangled-name='_ZN21BasicSurfaceEvaluator9swaptmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='202' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='27'>
-        <!-- void BasicSurfaceEvaluator::endtmesh() -->
-        <function-decl name='endtmesh' mangled-name='_ZN21BasicSurfaceEvaluator8endtmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='210' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='28'>
-        <!-- void BasicSurfaceEvaluator::bgnqstrip() -->
-        <function-decl name='bgnqstrip' mangled-name='_ZN21BasicSurfaceEvaluator9bgnqstripEv' filepath='libnurbs/internals/basicsurfeval.cc' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='29'>
-        <!-- void BasicSurfaceEvaluator::endqstrip() -->
-        <function-decl name='endqstrip' mangled-name='_ZN21BasicSurfaceEvaluator9endqstripEv' filepath='libnurbs/internals/basicsurfeval.cc' line='226' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='30'>
-        <!-- void BasicSurfaceEvaluator::bgntfan() -->
-        <function-decl name='bgntfan' mangled-name='_ZN21BasicSurfaceEvaluator7bgntfanEv' filepath='libnurbs/internals/basicsurfeval.cc' line='180' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='31'>
-        <!-- void BasicSurfaceEvaluator::endtfan() -->
-        <function-decl name='endtfan' mangled-name='_ZN21BasicSurfaceEvaluator7endtfanEv' filepath='libnurbs/internals/basicsurfeval.cc' line='188' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='32'>
-        <!-- void BasicSurfaceEvaluator::evalUStrip(int, REAL, REAL*, int, REAL, REAL*) -->
-        <function-decl name='evalUStrip' mangled-name='_ZN21BasicSurfaceEvaluator10evalUStripEifPfifS0_' filepath='libnurbs/internals/basicsurfeval.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='33'>
-        <!-- void BasicSurfaceEvaluator::evalVStrip(int, REAL, REAL*, int, REAL, REAL*) -->
-        <function-decl name='evalVStrip' mangled-name='_ZN21BasicSurfaceEvaluator10evalVStripEifPfifS0_' filepath='libnurbs/internals/basicsurfeval.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='34'>
-        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE(REAL, REAL, REAL*, REAL*) -->
-        <function-decl name='inDoEvalCoord2NOGE' mangled-name='_ZN21BasicSurfaceEvaluator18inDoEvalCoord2NOGEEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='35'>
-        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE_BU(REAL, REAL, REAL*, REAL*) -->
-        <function-decl name='inDoEvalCoord2NOGE_BU' mangled-name='_ZN21BasicSurfaceEvaluator21inDoEvalCoord2NOGE_BUEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='36'>
-        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE_BV(REAL, REAL, REAL*, REAL*) -->
-        <function-decl name='inDoEvalCoord2NOGE_BV' mangled-name='_ZN21BasicSurfaceEvaluator21inDoEvalCoord2NOGE_BVEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='37'>
-        <!-- void BasicSurfaceEvaluator::inPreEvaluateBV_intfac(REAL) -->
-        <function-decl name='inPreEvaluateBV_intfac' mangled-name='_ZN21BasicSurfaceEvaluator22inPreEvaluateBV_intfacEf' filepath='libnurbs/internals/basicsurfeval.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' vtable-offset='38'>
-        <!-- void BasicSurfaceEvaluator::inPreEvaluateBU_intfac(REAL) -->
-        <function-decl name='inPreEvaluateBU_intfac' mangled-name='_ZN21BasicSurfaceEvaluator22inPreEvaluateBU_intfacEf' filepath='libnurbs/internals/basicsurfeval.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
-          <parameter type-id='type-id-70' is-artificial='yes'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- typedef bezierPatchMesh bezierPatchMesh -->
-    <typedef-decl name='bezierPatchMesh' type-id='type-id-69' filepath='libnurbs/interface/bezierPatchMesh.h' line='66' column='1' id='type-id-231'/>
-    <!-- typedef bezierPatch bezierPatch -->
-    <typedef-decl name='bezierPatch' type-id='type-id-142' filepath='libnurbs/interface/bezierPatch.h' line='65' column='1' id='type-id-232'/>
     <!-- struct bezierPatch -->
-    <class-decl name='bezierPatch' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='36' column='1' id='type-id-142'>
+    <class-decl name='bezierPatch' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='36' column='1' id='type-id-94'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- float bezierPatch::umin -->
-        <var-decl name='umin' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
+        <var-decl name='umin' type-id='type-id-15' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
         <!-- float bezierPatch::vmin -->
-        <var-decl name='vmin' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
+        <var-decl name='vmin' type-id='type-id-15' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- float bezierPatch::umax -->
-        <var-decl name='umax' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
+        <var-decl name='umax' type-id='type-id-15' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='96'>
         <!-- float bezierPatch::vmax -->
-        <var-decl name='vmax' type-id='type-id-28' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
+        <var-decl name='vmax' type-id='type-id-15' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='37' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- int bezierPatch::uorder -->
-        <var-decl name='uorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='38' column='1'/>
+        <var-decl name='uorder' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='38' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='160'>
         <!-- int bezierPatch::vorder -->
-        <var-decl name='vorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='39' column='1'/>
+        <var-decl name='vorder' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='39' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- int bezierPatch::dimension -->
-        <var-decl name='dimension' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='57' column='1'/>
+        <var-decl name='dimension' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='57' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- float* bezierPatch::ctlpoints -->
-        <var-decl name='ctlpoints' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='58' column='1'/>
+        <var-decl name='ctlpoints' type-id='type-id-49' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='58' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- bezierPatch* bezierPatch::next -->
-        <var-decl name='next' type-id='type-id-132' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='63' column='1'/>
+        <var-decl name='next' type-id='type-id-95' visibility='default' filepath='libnurbs/interface/bezierPatch.h' line='63' column='1'/>
       </data-member>
     </class-decl>
+    <!-- typedef bezierPatch bezierPatch -->
+    <typedef-decl name='bezierPatch' type-id='type-id-94' filepath='libnurbs/interface/bezierPatch.h' line='65' column='1' id='type-id-96'/>
+    <!-- struct bezierPatchMesh -->
+    <class-decl name='bezierPatchMesh' size-in-bits='960' is-struct='yes' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='39' column='1' id='type-id-97'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- bezierPatch* bezierPatchMesh::bpatch -->
+        <var-decl name='bpatch' type-id='type-id-95' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='40' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- bezierPatch* bezierPatchMesh::bpatch_normal -->
+        <var-decl name='bpatch_normal' type-id='type-id-95' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='41' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- bezierPatch* bezierPatchMesh::bpatch_texcoord -->
+        <var-decl name='bpatch_texcoord' type-id='type-id-95' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='42' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- bezierPatch* bezierPatchMesh::bpatch_color -->
+        <var-decl name='bpatch_color' type-id='type-id-95' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='43' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- float* bezierPatchMesh::UVarray -->
+        <var-decl name='UVarray' type-id='type-id-49' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='45' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- int* bezierPatchMesh::length_array -->
+        <var-decl name='length_array' type-id='type-id-98' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='46' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- GLenum* bezierPatchMesh::type_array -->
+        <var-decl name='type_array' type-id='type-id-99' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='47' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <!-- int bezierPatchMesh::size_UVarray -->
+        <var-decl name='size_UVarray' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='50' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='480'>
+        <!-- int bezierPatchMesh::index_UVarray -->
+        <var-decl name='index_UVarray' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='51' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <!-- int bezierPatchMesh::size_length_array -->
+        <var-decl name='size_length_array' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='52' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='544'>
+        <!-- int bezierPatchMesh::index_length_array -->
+        <var-decl name='index_length_array' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='53' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <!-- int bezierPatchMesh::counter -->
+        <var-decl name='counter' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='55' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='608'>
+        <!-- GLenum bezierPatchMesh::type -->
+        <var-decl name='type' type-id='type-id-36' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='56' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <!-- float* bezierPatchMesh::vertex_array -->
+        <var-decl name='vertex_array' type-id='type-id-49' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='59' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='704'>
+        <!-- float* bezierPatchMesh::normal_array -->
+        <var-decl name='normal_array' type-id='type-id-49' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='60' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <!-- float* bezierPatchMesh::color_array -->
+        <var-decl name='color_array' type-id='type-id-49' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='61' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <!-- float* bezierPatchMesh::texcoord_array -->
+        <var-decl name='texcoord_array' type-id='type-id-49' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='62' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='896'>
+        <!-- bezierPatchMesh* bezierPatchMesh::next -->
+        <var-decl name='next' type-id='type-id-54' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='65' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef bezierPatchMesh bezierPatchMesh -->
+    <typedef-decl name='bezierPatchMesh' type-id='type-id-97' filepath='libnurbs/interface/bezierPatchMesh.h' line='66' column='1' id='type-id-100'/>
     <!-- struct surfEvalMachine -->
-    <class-decl name='surfEvalMachine' size-in-bits='210272' is-struct='yes' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='63' column='1' id='type-id-93'>
+    <class-decl name='surfEvalMachine' size-in-bits='210272' is-struct='yes' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='63' column='1' id='type-id-101'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- REAL surfEvalMachine::uprime -->
         <var-decl name='uprime' type-id='type-id-1' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='64' column='1'/>
@@ -5396,7 +3718,7 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- int surfEvalMachine::k -->
-        <var-decl name='k' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='66' column='1'/>
+        <var-decl name='k' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='66' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='96'>
         <!-- REAL surfEvalMachine::u1 -->
@@ -5408,11 +3730,11 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='160'>
         <!-- int surfEvalMachine::ustride -->
-        <var-decl name='ustride' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='69' column='1'/>
+        <var-decl name='ustride' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='69' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- int surfEvalMachine::uorder -->
-        <var-decl name='uorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='70' column='1'/>
+        <var-decl name='uorder' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='70' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='224'>
         <!-- REAL surfEvalMachine::v1 -->
@@ -5424,15 +3746,15 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='288'>
         <!-- int surfEvalMachine::vstride -->
-        <var-decl name='vstride' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='73' column='1'/>
+        <var-decl name='vstride' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='73' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- int surfEvalMachine::vorder -->
-        <var-decl name='vorder' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='74' column='1'/>
+        <var-decl name='vorder' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='74' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='352'>
         <!-- REAL surfEvalMachine::ctlPoints[6400] -->
-        <var-decl name='ctlPoints' type-id='type-id-53' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='75' column='1'/>
+        <var-decl name='ctlPoints' type-id='type-id-56' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='75' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='205152'>
         <!-- REAL surfEvalMachine::ucoeff[40] -->
@@ -5452,888 +3774,2715 @@
       </data-member>
     </class-decl>
     <!-- typedef surfEvalMachine surfEvalMachine -->
-    <typedef-decl name='surfEvalMachine' type-id='type-id-93' filepath='libnurbs/interface/glsurfeval.h' line='80' column='1' id='type-id-54'/>
-    <!-- struct bezierPatchMesh -->
-    <class-decl name='bezierPatchMesh' size-in-bits='960' is-struct='yes' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='39' column='1' id='type-id-69'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- bezierPatch* bezierPatchMesh::bpatch -->
-        <var-decl name='bpatch' type-id='type-id-132' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='40' column='1'/>
+    <typedef-decl name='surfEvalMachine' type-id='type-id-101' filepath='libnurbs/interface/glsurfeval.h' line='80' column='1' id='type-id-57'/>
+    <!-- class StoredVertex -->
+    <class-decl name='StoredVertex' size-in-bits='256' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='84' column='1' id='type-id-102'>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- int StoredVertex::type -->
+        <var-decl name='type' type-id='type-id-8' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='95' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- bezierPatch* bezierPatchMesh::bpatch_normal -->
-        <var-decl name='bpatch_normal' type-id='type-id-132' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='41' column='1'/>
+      <data-member access='private' layout-offset-in-bits='32'>
+        <!-- REAL StoredVertex::coord[2] -->
+        <var-decl name='coord' type-id='type-id-88' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='96' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- bezierPatch* bezierPatchMesh::bpatch_texcoord -->
-        <var-decl name='bpatch_texcoord' type-id='type-id-132' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='42' column='1'/>
+      <data-member access='private' layout-offset-in-bits='128'>
+        <!-- long int StoredVertex::point[2] -->
+        <var-decl name='point' type-id='type-id-93' visibility='default' filepath='libnurbs/interface/glsurfeval.h' line='97' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- bezierPatch* bezierPatchMesh::bpatch_color -->
-        <var-decl name='bpatch_color' type-id='type-id-132' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='43' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- float* bezierPatchMesh::UVarray -->
-        <var-decl name='UVarray' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='45' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- int* bezierPatchMesh::length_array -->
-        <var-decl name='length_array' type-id='type-id-133' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- GLenum* bezierPatchMesh::type_array -->
-        <var-decl name='type_array' type-id='type-id-134' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='47' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='448'>
-        <!-- int bezierPatchMesh::size_UVarray -->
-        <var-decl name='size_UVarray' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='50' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='480'>
-        <!-- int bezierPatchMesh::index_UVarray -->
-        <var-decl name='index_UVarray' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='51' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='512'>
-        <!-- int bezierPatchMesh::size_length_array -->
-        <var-decl name='size_length_array' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='544'>
-        <!-- int bezierPatchMesh::index_length_array -->
-        <var-decl name='index_length_array' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='53' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='576'>
-        <!-- int bezierPatchMesh::counter -->
-        <var-decl name='counter' type-id='type-id-11' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='55' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='608'>
-        <!-- GLenum bezierPatchMesh::type -->
-        <var-decl name='type' type-id='type-id-59' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='56' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='640'>
-        <!-- float* bezierPatchMesh::vertex_array -->
-        <var-decl name='vertex_array' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='59' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='704'>
-        <!-- float* bezierPatchMesh::normal_array -->
-        <var-decl name='normal_array' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='768'>
-        <!-- float* bezierPatchMesh::color_array -->
-        <var-decl name='color_array' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='61' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='832'>
-        <!-- float* bezierPatchMesh::texcoord_array -->
-        <var-decl name='texcoord_array' type-id='type-id-58' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='896'>
-        <!-- bezierPatchMesh* bezierPatchMesh::next -->
-        <var-decl name='next' type-id='type-id-51' visibility='default' filepath='libnurbs/interface/bezierPatchMesh.h' line='65' column='1'/>
-      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- StoredVertex::StoredVertex() -->
+        <function-decl name='StoredVertex' filepath='libnurbs/interface/glsurfeval.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'StoredVertex*' -->
+          <parameter type-id='type-id-92' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes'>
+        <!-- StoredVertex::~StoredVertex(int) -->
+        <function-decl name='~StoredVertex' filepath='libnurbs/interface/glsurfeval.h' line='87' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'StoredVertex*' -->
+          <parameter type-id='type-id-92' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void StoredVertex::saveEvalCoord(REAL, REAL) -->
+        <function-decl name='saveEvalCoord' mangled-name='_ZN12StoredVertex13saveEvalCoordEff' filepath='libnurbs/interface/glsurfeval.h' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'StoredVertex*' -->
+          <parameter type-id='type-id-92' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void StoredVertex::saveEvalPoint(long int, long int) -->
+        <function-decl name='saveEvalPoint' mangled-name='_ZN12StoredVertex13saveEvalPointEll' filepath='libnurbs/interface/glsurfeval.h' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'StoredVertex*' -->
+          <parameter type-id='type-id-92' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void StoredVertex::invoke(OpenGLSurfaceEvaluator*) -->
+        <function-decl name='invoke' mangled-name='_ZN12StoredVertex6invokeEP22OpenGLSurfaceEvaluator' filepath='libnurbs/interface/glsurfeval.h' line='92' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'StoredVertex*' -->
+          <parameter type-id='type-id-92' is-artificial='yes'/>
+          <!-- parameter of type 'OpenGLSurfaceEvaluator*' -->
+          <parameter type-id='type-id-48'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
     </class-decl>
     <!-- BasicSurfaceEvaluator* -->
-    <pointer-type-def type-id='type-id-48' size-in-bits='64' id='type-id-70'/>
+    <pointer-type-def type-id='type-id-51' size-in-bits='64' id='type-id-103'/>
     <!-- GLenum* -->
-    <pointer-type-def type-id='type-id-59' size-in-bits='64' id='type-id-134'/>
+    <pointer-type-def type-id='type-id-36' size-in-bits='64' id='type-id-99'/>
     <!-- REAL[3]* -->
-    <pointer-type-def type-id='type-id-230' size-in-bits='64' id='type-id-233'/>
+    <pointer-type-def type-id='type-id-89' size-in-bits='64' id='type-id-58'/>
     <!-- StoredVertex* -->
-    <pointer-type-def type-id='type-id-102' size-in-bits='64' id='type-id-67'/>
-    <!-- StoredVertex* const -->
-    <qualified-type-def type-id='type-id-67' const='yes' id='type-id-234'/>
+    <pointer-type-def type-id='type-id-102' size-in-bits='64' id='type-id-92'/>
     <!-- SurfaceMap* -->
-    <pointer-type-def type-id='type-id-235' size-in-bits='64' id='type-id-236'/>
+    <pointer-type-def type-id='type-id-104' size-in-bits='64' id='type-id-105'/>
     <!-- bezierPatch* -->
-    <pointer-type-def type-id='type-id-142' size-in-bits='64' id='type-id-132'/>
+    <pointer-type-def type-id='type-id-94' size-in-bits='64' id='type-id-95'/>
     <!-- bezierPatchMesh* -->
-    <pointer-type-def type-id='type-id-69' size-in-bits='64' id='type-id-51'/>
+    <pointer-type-def type-id='type-id-97' size-in-bits='64' id='type-id-54'/>
     <!-- int* -->
-    <pointer-type-def type-id='type-id-11' size-in-bits='64' id='type-id-133'/>
+    <pointer-type-def type-id='type-id-8' size-in-bits='64' id='type-id-98'/>
     <!-- surfEvalMachine* -->
-    <pointer-type-def type-id='type-id-54' size-in-bits='64' id='type-id-237'/>
+    <pointer-type-def type-id='type-id-57' size-in-bits='64' id='type-id-59'/>
     <!-- struct SurfaceMap -->
-    <class-decl name='SurfaceMap' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-235'/>
+    <class-decl name='SurfaceMap' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-104'/>
+    <!-- struct BasicSurfaceEvaluator -->
+    <class-decl name='BasicSurfaceEvaluator' is-struct='yes' visibility='default' filepath='libnurbs/internals/basicsurfeval.h' line='43' column='1' is-declaration-only='yes' id='type-id-51'>
+      <!-- class CachingEvaluator -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-10'/>
+      <member-function access='public' destructor='yes' vtable-offset='-1'>
+        <!-- BasicSurfaceEvaluator::~BasicSurfaceEvaluator(int) -->
+        <function-decl name='~BasicSurfaceEvaluator' filepath='libnurbs/internals/basicsurfeval.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='9'>
+        <!-- void BasicSurfaceEvaluator::range2f(long int, REAL*, REAL*) -->
+        <function-decl name='range2f' mangled-name='_ZN21BasicSurfaceEvaluator7range2fElPfS0_' filepath='libnurbs/internals/basicsurfeval.cc' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='10'>
+        <!-- void BasicSurfaceEvaluator::domain2f(REAL, REAL, REAL, REAL) -->
+        <function-decl name='domain2f' mangled-name='_ZN21BasicSurfaceEvaluator8domain2fEffff' filepath='libnurbs/internals/basicsurfeval.cc' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='11'>
+        <!-- void BasicSurfaceEvaluator::enable(long int) -->
+        <function-decl name='enable' mangled-name='_ZN21BasicSurfaceEvaluator6enableEl' filepath='libnurbs/internals/basicsurfeval.cc' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='12'>
+        <!-- void BasicSurfaceEvaluator::disable(long int) -->
+        <function-decl name='disable' mangled-name='_ZN21BasicSurfaceEvaluator7disableEl' filepath='libnurbs/internals/basicsurfeval.cc' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='13'>
+        <!-- void BasicSurfaceEvaluator::bgnmap2f(long int) -->
+        <function-decl name='bgnmap2f' mangled-name='_ZN21BasicSurfaceEvaluator8bgnmap2fEl' filepath='libnurbs/internals/basicsurfeval.cc' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='14'>
+        <!-- void BasicSurfaceEvaluator::map2f(long int, REAL, REAL, long int, long int, REAL, REAL, long int, long int, REAL*) -->
+        <function-decl name='map2f' mangled-name='_ZN21BasicSurfaceEvaluator5map2fElffllffllPf' filepath='libnurbs/internals/basicsurfeval.cc' line='106' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='15'>
+        <!-- void BasicSurfaceEvaluator::mapgrid2f(long int, REAL, REAL, long int, REAL, REAL) -->
+        <function-decl name='mapgrid2f' mangled-name='_ZN21BasicSurfaceEvaluator9mapgrid2fElfflff' filepath='libnurbs/internals/basicsurfeval.cc' line='116' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='16'>
+        <!-- void BasicSurfaceEvaluator::mapmesh2f(long int, long int, long int, long int, long int) -->
+        <function-decl name='mapmesh2f' mangled-name='_ZN21BasicSurfaceEvaluator9mapmesh2fElllll' filepath='libnurbs/internals/basicsurfeval.cc' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='17'>
+        <!-- void BasicSurfaceEvaluator::evalcoord2f(long int, REAL, REAL) -->
+        <function-decl name='evalcoord2f' mangled-name='_ZN21BasicSurfaceEvaluator11evalcoord2fElff' filepath='libnurbs/internals/basicsurfeval.cc' line='132' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='18'>
+        <!-- void BasicSurfaceEvaluator::evalpoint2i(long int, long int) -->
+        <function-decl name='evalpoint2i' mangled-name='_ZN21BasicSurfaceEvaluator11evalpoint2iEll' filepath='libnurbs/internals/basicsurfeval.cc' line='140' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='19'>
+        <!-- void BasicSurfaceEvaluator::endmap2f() -->
+        <function-decl name='endmap2f' mangled-name='_ZN21BasicSurfaceEvaluator8endmap2fEv' filepath='libnurbs/internals/basicsurfeval.cc' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='20'>
+        <!-- void BasicSurfaceEvaluator::polymode(long int) -->
+        <function-decl name='polymode' mangled-name='_ZN21BasicSurfaceEvaluator8polymodeEl' filepath='libnurbs/internals/basicsurfeval.cc' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='21'>
+        <!-- void BasicSurfaceEvaluator::bgnline() -->
+        <function-decl name='bgnline' mangled-name='_ZN21BasicSurfaceEvaluator7bgnlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='148' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='22'>
+        <!-- void BasicSurfaceEvaluator::endline() -->
+        <function-decl name='endline' mangled-name='_ZN21BasicSurfaceEvaluator7endlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='156' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='23'>
+        <!-- void BasicSurfaceEvaluator::bgnclosedline() -->
+        <function-decl name='bgnclosedline' mangled-name='_ZN21BasicSurfaceEvaluator13bgnclosedlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='164' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='24'>
+        <!-- void BasicSurfaceEvaluator::endclosedline() -->
+        <function-decl name='endclosedline' mangled-name='_ZN21BasicSurfaceEvaluator13endclosedlineEv' filepath='libnurbs/internals/basicsurfeval.cc' line='172' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='25'>
+        <!-- void BasicSurfaceEvaluator::bgntmesh() -->
+        <function-decl name='bgntmesh' mangled-name='_ZN21BasicSurfaceEvaluator8bgntmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='194' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='26'>
+        <!-- void BasicSurfaceEvaluator::swaptmesh() -->
+        <function-decl name='swaptmesh' mangled-name='_ZN21BasicSurfaceEvaluator9swaptmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='202' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='27'>
+        <!-- void BasicSurfaceEvaluator::endtmesh() -->
+        <function-decl name='endtmesh' mangled-name='_ZN21BasicSurfaceEvaluator8endtmeshEv' filepath='libnurbs/internals/basicsurfeval.cc' line='210' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='28'>
+        <!-- void BasicSurfaceEvaluator::bgnqstrip() -->
+        <function-decl name='bgnqstrip' mangled-name='_ZN21BasicSurfaceEvaluator9bgnqstripEv' filepath='libnurbs/internals/basicsurfeval.cc' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='29'>
+        <!-- void BasicSurfaceEvaluator::endqstrip() -->
+        <function-decl name='endqstrip' mangled-name='_ZN21BasicSurfaceEvaluator9endqstripEv' filepath='libnurbs/internals/basicsurfeval.cc' line='226' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='30'>
+        <!-- void BasicSurfaceEvaluator::bgntfan() -->
+        <function-decl name='bgntfan' mangled-name='_ZN21BasicSurfaceEvaluator7bgntfanEv' filepath='libnurbs/internals/basicsurfeval.cc' line='180' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='31'>
+        <!-- void BasicSurfaceEvaluator::endtfan() -->
+        <function-decl name='endtfan' mangled-name='_ZN21BasicSurfaceEvaluator7endtfanEv' filepath='libnurbs/internals/basicsurfeval.cc' line='188' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='32'>
+        <!-- void BasicSurfaceEvaluator::evalUStrip(int, REAL, REAL*, int, REAL, REAL*) -->
+        <function-decl name='evalUStrip' mangled-name='_ZN21BasicSurfaceEvaluator10evalUStripEifPfifS0_' filepath='libnurbs/internals/basicsurfeval.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='33'>
+        <!-- void BasicSurfaceEvaluator::evalVStrip(int, REAL, REAL*, int, REAL, REAL*) -->
+        <function-decl name='evalVStrip' mangled-name='_ZN21BasicSurfaceEvaluator10evalVStripEifPfifS0_' filepath='libnurbs/internals/basicsurfeval.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='34'>
+        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE(REAL, REAL, REAL*, REAL*) -->
+        <function-decl name='inDoEvalCoord2NOGE' mangled-name='_ZN21BasicSurfaceEvaluator18inDoEvalCoord2NOGEEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='35'>
+        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE_BU(REAL, REAL, REAL*, REAL*) -->
+        <function-decl name='inDoEvalCoord2NOGE_BU' mangled-name='_ZN21BasicSurfaceEvaluator21inDoEvalCoord2NOGE_BUEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='36'>
+        <!-- void BasicSurfaceEvaluator::inDoEvalCoord2NOGE_BV(REAL, REAL, REAL*, REAL*) -->
+        <function-decl name='inDoEvalCoord2NOGE_BV' mangled-name='_ZN21BasicSurfaceEvaluator21inDoEvalCoord2NOGE_BVEffPfS0_' filepath='libnurbs/internals/basicsurfeval.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='37'>
+        <!-- void BasicSurfaceEvaluator::inPreEvaluateBV_intfac(REAL) -->
+        <function-decl name='inPreEvaluateBV_intfac' mangled-name='_ZN21BasicSurfaceEvaluator22inPreEvaluateBV_intfacEf' filepath='libnurbs/internals/basicsurfeval.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' vtable-offset='38'>
+        <!-- void BasicSurfaceEvaluator::inPreEvaluateBU_intfac(REAL) -->
+        <function-decl name='inPreEvaluateBU_intfac' mangled-name='_ZN21BasicSurfaceEvaluator22inPreEvaluateBU_intfacEf' filepath='libnurbs/internals/basicsurfeval.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'BasicSurfaceEvaluator*' -->
+          <parameter type-id='type-id-103' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/interface/insurfeval.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/arc.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- char -->
-    <type-decl name='char' size-in-bits='8' id='type-id-143'/>
+    <type-decl name='char' size-in-bits='8' id='type-id-106'/>
     <!-- char*[32] -->
-    <array-type-def dimensions='1' type-id='type-id-115' size-in-bits='2048' id='type-id-114'>
+    <array-type-def dimensions='1' type-id='type-id-107' size-in-bits='2048' id='type-id-108'>
       <!-- <anonymous range>[32] -->
-      <subrange length='32' type-id='type-id-3' id='type-id-144'/>
+      <subrange length='32' type-id='type-id-3' id='type-id-109'/>
     </array-type-def>
-    <!-- struct Arc -->
-    <class-decl name='Arc' size-in-bits='448' is-struct='yes' visibility='default' filepath='libnurbs/internals/arc.h' line='55' column='1' id='type-id-168'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' static='yes'>
-        <!-- static const int Arc::bezier_tag -->
-        <var-decl name='bezier_tag' type-id='type-id-174' mangled-name='_ZN3Arc10bezier_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='58' column='1'/>
-      </data-member>
-      <data-member access='public' static='yes'>
-        <!-- static const int Arc::arc_tag -->
-        <var-decl name='arc_tag' type-id='type-id-174' mangled-name='_ZN3Arc7arc_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='59' column='1'/>
-      </data-member>
-      <data-member access='public' static='yes'>
-        <!-- static const int Arc::tail_tag -->
-        <var-decl name='tail_tag' type-id='type-id-174' mangled-name='_ZN3Arc8tail_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- Arc_ptr Arc::prev -->
-        <var-decl name='prev' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/arc.h' line='61' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- Arc_ptr Arc::next -->
-        <var-decl name='next' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/arc.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- Arc_ptr Arc::link -->
-        <var-decl name='link' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/arc.h' line='63' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- BezierArc* Arc::bezierArc -->
-        <var-decl name='bezierArc' type-id='type-id-193' visibility='default' filepath='libnurbs/internals/arc.h' line='64' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- PwlArc* Arc::pwlArc -->
-        <var-decl name='pwlArc' type-id='type-id-194' visibility='default' filepath='libnurbs/internals/arc.h' line='65' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- long int Arc::type -->
-        <var-decl name='type' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/arc.h' line='66' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- long int Arc::nuid -->
-        <var-decl name='nuid' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/arc.h' line='67' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(Arc*, PwlArc*) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-167' is-artificial='yes'/>
-          <!-- parameter of type 'Arc*' -->
-          <parameter type-id='type-id-167'/>
-          <!-- parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-194'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Arc::Arc(arc_side, long int) -->
-        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Arc*' -->
-          <parameter type-id='type-id-167' is-artificial='yes'/>
-          <!-- parameter of type 'enum arc_side' -->
-          <parameter type-id='type-id-195'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Pool -->
-    <class-decl name='Pool' size-in-bits='2496' visibility='default' filepath='libnurbs/internals/bufpool.h' line='50' column='1' id='type-id-76'>
-      <member-type access='protected'>
-        <!-- enum Pool::Magic -->
-        <enum-decl name='Magic' filepath='libnurbs/internals/bufpool.h' line='70' column='1' id='type-id-112'>
-          <underlying-type type-id='type-id-9'/>
-          <enumerator name='is_allocated' value='62369'/>
-          <enumerator name='is_free' value='61858'/>
-        </enum-decl>
-      </member-type>
-      <data-member access='protected' layout-offset-in-bits='0'>
-        <!-- Buffer* Pool::freelist -->
-        <var-decl name='freelist' type-id='type-id-113' visibility='default' filepath='libnurbs/internals/bufpool.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='64'>
-        <!-- char* Pool::blocklist[32] -->
-        <var-decl name='blocklist' type-id='type-id-114' visibility='default' filepath='libnurbs/internals/bufpool.h' line='63' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2112'>
-        <!-- int Pool::nextblock -->
-        <var-decl name='nextblock' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/bufpool.h' line='64' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2176'>
-        <!-- char* Pool::curblock -->
-        <var-decl name='curblock' type-id='type-id-115' visibility='default' filepath='libnurbs/internals/bufpool.h' line='65' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2240'>
-        <!-- int Pool::buffersize -->
-        <var-decl name='buffersize' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/bufpool.h' line='66' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2272'>
-        <!-- int Pool::nextsize -->
-        <var-decl name='nextsize' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/bufpool.h' line='67' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2304'>
-        <!-- int Pool::nextfree -->
-        <var-decl name='nextfree' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/bufpool.h' line='68' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2336'>
-        <!-- int Pool::initsize -->
-        <var-decl name='initsize' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/bufpool.h' line='69' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2368'>
-        <!-- const char* Pool::name -->
-        <var-decl name='name' type-id='type-id-116' visibility='default' filepath='libnurbs/internals/bufpool.h' line='71' column='1'/>
-      </data-member>
-      <data-member access='protected' layout-offset-in-bits='2432'>
-        <!-- Pool::Magic Pool::magic -->
-        <var-decl name='magic' type-id='type-id-112' visibility='default' filepath='libnurbs/internals/bufpool.h' line='72' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Pool::Pool(int, int, const char*) -->
-        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-117' is-artificial='yes'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'const char*' -->
-          <parameter type-id='type-id-116'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Pool::~Pool(int) -->
-        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Pool*' -->
-          <parameter type-id='type-id-117' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
     <!-- typedef unsigned long int size_t -->
-    <typedef-decl name='size_t' type-id='type-id-3' filepath='/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/stddef.h' line='211' column='1' id='type-id-238'/>
-    <!-- class Buffer -->
-    <class-decl name='Buffer' size-in-bits='64' visibility='default' filepath='libnurbs/internals/bufpool.h' line='45' column='1' id='type-id-135'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Buffer* Buffer::next -->
-        <var-decl name='next' type-id='type-id-113' visibility='default' filepath='libnurbs/internals/bufpool.h' line='47' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- class PooledObj -->
-    <class-decl name='PooledObj' size-in-bits='8' visibility='default' filepath='libnurbs/internals/bufpool.h' line='118' column='1' id='type-id-157'/>
-    <!-- struct TrimVertex -->
-    <class-decl name='TrimVertex' size-in-bits='128' is-struct='yes' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='43' column='1' id='type-id-172'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- REAL TrimVertex::param[2] -->
-        <var-decl name='param' type-id='type-id-164' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='45' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- long int TrimVertex::nuid -->
-        <var-decl name='nuid' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='50' column='1'/>
-      </data-member>
-    </class-decl>
+    <typedef-decl name='size_t' type-id='type-id-3' filepath='/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/stddef.h' line='211' column='1' id='type-id-110'/>
     <!-- typedef Arc* Arc_ptr -->
-    <typedef-decl name='Arc_ptr' type-id='type-id-167' filepath='libnurbs/internals/arc.h' line='50' column='1' id='type-id-124'/>
+    <typedef-decl name='Arc_ptr' type-id='type-id-111' filepath='libnurbs/internals/arc.h' line='50' column='1' id='type-id-112'/>
     <!-- enum arc_side -->
-    <enum-decl name='arc_side' filepath='libnurbs/internals/arc.h' line='52' column='1' id='type-id-195'>
-      <underlying-type type-id='type-id-9'/>
+    <enum-decl name='arc_side' filepath='libnurbs/internals/arc.h' line='52' column='1' id='type-id-113'>
+      <underlying-type type-id='type-id-12'/>
       <enumerator name='arc_none' value='0'/>
       <enumerator name='arc_right' value='1'/>
       <enumerator name='arc_top' value='2'/>
       <enumerator name='arc_left' value='3'/>
       <enumerator name='arc_bottom' value='4'/>
     </enum-decl>
-    <!-- class PwlArc -->
-    <class-decl name='PwlArc' size-in-bits='192' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='44' column='1' id='type-id-210'>
+    <!-- struct Arc -->
+    <class-decl name='Arc' size-in-bits='448' is-struct='yes' visibility='default' filepath='libnurbs/internals/arc.h' line='55' column='1' id='type-id-114'>
       <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
+      <data-member access='public' static='yes'>
+        <!-- static const int Arc::bezier_tag -->
+        <var-decl name='bezier_tag' type-id='type-id-116' mangled-name='_ZN3Arc10bezier_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='58' column='1'/>
+      </data-member>
+      <data-member access='public' static='yes'>
+        <!-- static const int Arc::arc_tag -->
+        <var-decl name='arc_tag' type-id='type-id-116' mangled-name='_ZN3Arc7arc_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='59' column='1'/>
+      </data-member>
+      <data-member access='public' static='yes'>
+        <!-- static const int Arc::tail_tag -->
+        <var-decl name='tail_tag' type-id='type-id-116' mangled-name='_ZN3Arc8tail_tagE' visibility='default' filepath='libnurbs/internals/arc.h' line='60' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- Arc_ptr Arc::prev -->
+        <var-decl name='prev' type-id='type-id-112' visibility='default' filepath='libnurbs/internals/arc.h' line='61' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- Arc_ptr Arc::next -->
+        <var-decl name='next' type-id='type-id-112' visibility='default' filepath='libnurbs/internals/arc.h' line='62' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- Arc_ptr Arc::link -->
+        <var-decl name='link' type-id='type-id-112' visibility='default' filepath='libnurbs/internals/arc.h' line='63' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- BezierArc* Arc::bezierArc -->
+        <var-decl name='bezierArc' type-id='type-id-117' visibility='default' filepath='libnurbs/internals/arc.h' line='64' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- PwlArc* Arc::pwlArc -->
+        <var-decl name='pwlArc' type-id='type-id-118' visibility='default' filepath='libnurbs/internals/arc.h' line='65' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- long int Arc::type -->
+        <var-decl name='type' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/arc.h' line='66' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- long int Arc::nuid -->
+        <var-decl name='nuid' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/arc.h' line='67' column='1'/>
+      </data-member>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(Arc*, PwlArc*) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-118'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' constructor='yes'>
+        <!-- Arc::Arc(arc_side, long int) -->
+        <function-decl name='Arc' filepath='libnurbs/internals/arc.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-113'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::clearside() -->
+        <function-decl name='clearside' mangled-name='_ZN3Arc9clearsideEv' filepath='libnurbs/internals/arc.h' line='94' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::clearbezier() -->
+        <function-decl name='clearbezier' mangled-name='_ZN3Arc11clearbezierEv' filepath='libnurbs/internals/arc.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::setside(arc_side) -->
+        <function-decl name='setside' mangled-name='_ZN3Arc7setsideE8arc_side' filepath='libnurbs/internals/arc.h' line='95' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-113'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- REAL* Arc::tail() -->
+        <function-decl name='tail' mangled-name='_ZN3Arc4tailEv' filepath='libnurbs/internals/arc.h' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- REAL* -->
+          <return type-id='type-id-22'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- REAL* Arc::rhead() -->
+        <function-decl name='rhead' mangled-name='_ZN3Arc5rheadEv' filepath='libnurbs/internals/arc.h' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- REAL* -->
+          <return type-id='type-id-22'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::show() -->
+        <function-decl name='show' mangled-name='_ZN3Arc4showEv' filepath='libnurbs/internals/arc.h' line='80' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- long int Arc::isbezier() -->
+        <function-decl name='isbezier' mangled-name='_ZN3Arc8isbezierEv' filepath='libnurbs/internals/arc.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- long int -->
+          <return type-id='type-id-38'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::makeSide(PwlArc*, arc_side) -->
+        <function-decl name='makeSide' mangled-name='_ZN3Arc8makeSideEP6PwlArc8arc_side' filepath='libnurbs/internals/arc.h' line='81' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- parameter of type 'PwlArc*' -->
+          <parameter type-id='type-id-118'/>
+          <!-- parameter of type 'enum arc_side' -->
+          <parameter type-id='type-id-113'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Arc::numpts() -->
+        <function-decl name='numpts' mangled-name='_ZN3Arc6numptsEv' filepath='libnurbs/internals/arc.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::markverts() -->
+        <function-decl name='markverts' mangled-name='_ZN3Arc9markvertsEv' filepath='libnurbs/internals/arc.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::getextrema(Arc_ptr*) -->
+        <function-decl name='getextrema' mangled-name='_ZN3Arc10getextremaEPPS_' filepath='libnurbs/internals/arc.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- parameter of type 'Arc_ptr*' -->
+          <parameter type-id='type-id-119'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::print() -->
+        <function-decl name='print' mangled-name='_ZN3Arc5printEv' filepath='libnurbs/internals/arc.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Arc::isDisconnected() -->
+        <function-decl name='isDisconnected' mangled-name='_ZN3Arc14isDisconnectedEv' filepath='libnurbs/internals/arc.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Arc::check() -->
+        <function-decl name='check' mangled-name='_ZN3Arc5checkEv' filepath='libnurbs/internals/arc.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- Arc_ptr Arc::append(Arc_ptr) -->
+        <function-decl name='append' mangled-name='_ZN3Arc6appendEPS_' filepath='libnurbs/internals/arc.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- typedef Arc_ptr -->
+          <return type-id='type-id-112'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Arc::getitail() -->
+        <function-decl name='getitail' mangled-name='_ZN3Arc8getitailEv' filepath='libnurbs/internals/arc.h' line='97' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- REAL* Arc::head() -->
+        <function-decl name='head' mangled-name='_ZN3Arc4headEv' filepath='libnurbs/internals/arc.h' line='89' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- REAL* -->
+          <return type-id='type-id-22'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::setbezier() -->
+        <function-decl name='setbezier' mangled-name='_ZN3Arc9setbezierEv' filepath='libnurbs/internals/arc.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::setmark() -->
+        <function-decl name='setmark' mangled-name='_ZN3Arc7setmarkEv' filepath='libnurbs/internals/arc.h' line='92' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- long int Arc::ismarked() -->
+        <function-decl name='ismarked' mangled-name='_ZN3Arc8ismarkedEv' filepath='libnurbs/internals/arc.h' line='91' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- long int -->
+          <return type-id='type-id-38'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::clearmark() -->
+        <function-decl name='clearmark' mangled-name='_ZN3Arc9clearmarkEv' filepath='libnurbs/internals/arc.h' line='93' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::setitail() -->
+        <function-decl name='setitail' mangled-name='_ZN3Arc8setitailEv' filepath='libnurbs/internals/arc.h' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Arc::clearitail() -->
+        <function-decl name='clearitail' mangled-name='_ZN3Arc10clearitailEv' filepath='libnurbs/internals/arc.h' line='99' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- arc_side Arc::getside() -->
+        <function-decl name='getside' mangled-name='_ZN3Arc7getsideEv' filepath='libnurbs/internals/arc.h' line='96' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- enum arc_side -->
+          <return type-id='type-id-113'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Arc::isTessellated() -->
+        <function-decl name='isTessellated' mangled-name='_ZN3Arc13isTessellatedEv' filepath='libnurbs/internals/arc.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- class Buffer -->
+    <class-decl name='Buffer' size-in-bits='64' visibility='default' filepath='libnurbs/internals/bufpool.h' line='45' column='1' id='type-id-120'>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- Buffer* Buffer::next -->
+        <var-decl name='next' type-id='type-id-121' visibility='default' filepath='libnurbs/internals/bufpool.h' line='47' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- class Pool -->
+    <class-decl name='Pool' size-in-bits='2496' visibility='default' filepath='libnurbs/internals/bufpool.h' line='50' column='1' id='type-id-67'>
+      <member-type access='protected'>
+        <!-- enum Pool::Magic -->
+        <enum-decl name='Magic' filepath='libnurbs/internals/bufpool.h' line='70' column='1' id='type-id-122'>
+          <underlying-type type-id='type-id-12'/>
+          <enumerator name='is_allocated' value='62369'/>
+          <enumerator name='is_free' value='61858'/>
+        </enum-decl>
+      </member-type>
+      <data-member access='protected' layout-offset-in-bits='0'>
+        <!-- Buffer* Pool::freelist -->
+        <var-decl name='freelist' type-id='type-id-121' visibility='default' filepath='libnurbs/internals/bufpool.h' line='62' column='1'/>
+      </data-member>
+      <data-member access='protected' layout-offset-in-bits='64'>
+        <!-- char* Pool::blocklist[32] -->
+        <var-decl name='blocklist' type-id='type-id-108' visibility='default' filepath='libnurbs/internals/bufpool.h' line='63' column='1'/>
+      </data-member>
+      <data-member access='protected' layout-offset-in-bits='2112'>
+        <!-- int Pool::nextblock -->
+        <var-decl name='nextblock' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/bufpool.h' line='64' column='1'/>
+      </data-member>
+      <data-member access='protected' layout-offset-in-bits='2176'>
+        <!-- char* Pool::curblock -->
+        <var-decl name='curblock' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/bufpool.h' line='65' column='1'/>
+      </data-member>
+      <data-member access='protected' layout-offset-in-bits='2240'>
+        <!-- int Pool::buffersize -->
+        <var-decl name='buffersize' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/bufpool.h' line='66' column='1'/>
+      </data-member>
+      <data-member access='protected' layout-offset-in-bits='2272'>
+        <!-- int Pool::nextsize -->
+        <var-decl name='nextsize' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/bufpool.h' line='67' column='1'/>
+      </data-member>
+      <data-member access='protected' layout-offset-in-bits='2304'>
+        <!-- int Pool::nextfree -->
+        <var-decl name='nextfree' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/bufpool.h' line='68' column='1'/>
+      </data-member>
+      <data-member access='protected' layout-offset-in-bits='2336'>
+        <!-- int Pool::initsize -->
+        <var-decl name='initsize' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/bufpool.h' line='69' column='1'/>
+      </data-member>
+      <data-member access='protected' layout-offset-in-bits='2368'>
+        <!-- const char* Pool::name -->
+        <var-decl name='name' type-id='type-id-84' visibility='default' filepath='libnurbs/internals/bufpool.h' line='71' column='1'/>
+      </data-member>
+      <data-member access='protected' layout-offset-in-bits='2432'>
+        <!-- Pool::Magic Pool::magic -->
+        <var-decl name='magic' type-id='type-id-122' visibility='default' filepath='libnurbs/internals/bufpool.h' line='72' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- Pool::Pool(int, int, const char*) -->
+        <function-decl name='Pool' filepath='libnurbs/internals/bufpool.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-123' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-84'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes'>
+        <!-- Pool::~Pool(int) -->
+        <function-decl name='~Pool' filepath='libnurbs/internals/bufpool.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-123' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void* Pool::new_buffer() -->
+        <function-decl name='new_buffer' mangled-name='_ZN4Pool10new_bufferEv' filepath='libnurbs/internals/bufpool.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-123' is-artificial='yes'/>
+          <!-- void* -->
+          <return type-id='type-id-35'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Pool::clear() -->
+        <function-decl name='clear' mangled-name='_ZN4Pool5clearEv' filepath='libnurbs/internals/bufpool.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-123' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Pool::grow() -->
+        <function-decl name='grow' mangled-name='_ZN4Pool4growEv' filepath='libnurbs/internals/bufpool.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-123' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Pool::free_buffer(void*) -->
+        <function-decl name='free_buffer' mangled-name='_ZN4Pool11free_bufferEPv' filepath='libnurbs/internals/bufpool.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Pool*' -->
+          <parameter type-id='type-id-123' is-artificial='yes'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- class PooledObj -->
+    <class-decl name='PooledObj' size-in-bits='8' visibility='default' filepath='libnurbs/internals/bufpool.h' line='118' column='1' id='type-id-115'>
+      <member-function access='private' static='yes'>
+        <!-- void PooledObj::operator delete(Pool&) -->
+        <function-decl name='operator delete' mangled-name='_ZN9PooledObjdlEPvR4Pool' filepath='libnurbs/internals/bufpool.h' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- parameter of type 'Pool&' -->
+          <parameter type-id='type-id-124'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' static='yes'>
+        <!-- void* PooledObj::operator new(Pool&) -->
+        <function-decl name='operator new' mangled-name='_ZN9PooledObjnwEmR4Pool' filepath='libnurbs/internals/bufpool.h' line='120' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'typedef size_t' -->
+          <parameter type-id='type-id-110'/>
+          <!-- parameter of type 'Pool&' -->
+          <parameter type-id='type-id-124'/>
+          <!-- void* -->
+          <return type-id='type-id-35'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void PooledObj::deleteMe(Pool&) -->
+        <function-decl name='deleteMe' mangled-name='_ZN9PooledObj8deleteMeER4Pool' filepath='libnurbs/internals/bufpool.h' line='126' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'PooledObj*' -->
+          <parameter type-id='type-id-125' is-artificial='yes'/>
+          <!-- parameter of type 'Pool&' -->
+          <parameter type-id='type-id-124'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- class PwlArc -->
+    <class-decl name='PwlArc' size-in-bits='192' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='44' column='1' id='type-id-126'>
+      <!-- class PooledObj -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- TrimVertex* PwlArc::pts -->
-        <var-decl name='pts' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='46' column='1'/>
+        <var-decl name='pts' type-id='type-id-127' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='46' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- int PwlArc::npts -->
-        <var-decl name='npts' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='47' column='1'/>
+        <var-decl name='npts' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='47' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
         <!-- long int PwlArc::type -->
-        <var-decl name='type' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='48' column='1'/>
+        <var-decl name='type' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/pwlarc.h' line='48' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- PwlArc::PwlArc() -->
         <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <parameter type-id='type-id-118' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
         <!-- PwlArc::PwlArc(int, TrimVertex*) -->
         <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <parameter type-id='type-id-118' is-artificial='yes'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-141'/>
+          <parameter type-id='type-id-127'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
         <!-- PwlArc::PwlArc(int, TrimVertex*, long int) -->
         <function-decl name='PwlArc' filepath='libnurbs/internals/pwlarc.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'PwlArc*' -->
-          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <parameter type-id='type-id-118' is-artificial='yes'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-141'/>
+          <parameter type-id='type-id-127'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
+    <!-- struct TrimVertex -->
+    <class-decl name='TrimVertex' size-in-bits='128' is-struct='yes' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='43' column='1' id='type-id-128'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- REAL TrimVertex::param[2] -->
+        <var-decl name='param' type-id='type-id-88' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='45' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- long int TrimVertex::nuid -->
+        <var-decl name='nuid' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/trimvertex.h' line='50' column='1'/>
+      </data-member>
+    </class-decl>
     <!-- Arc* -->
-    <pointer-type-def type-id='type-id-168' size-in-bits='64' id='type-id-167'/>
-    <!-- Arc* const -->
-    <qualified-type-def type-id='type-id-167' const='yes' id='type-id-239'/>
+    <pointer-type-def type-id='type-id-114' size-in-bits='64' id='type-id-111'/>
     <!-- Arc_ptr* -->
-    <pointer-type-def type-id='type-id-124' size-in-bits='64' id='type-id-240'/>
+    <pointer-type-def type-id='type-id-112' size-in-bits='64' id='type-id-119'/>
     <!-- BezierArc* -->
-    <pointer-type-def type-id='type-id-208' size-in-bits='64' id='type-id-193'/>
+    <pointer-type-def type-id='type-id-129' size-in-bits='64' id='type-id-117'/>
     <!-- Buffer* -->
-    <pointer-type-def type-id='type-id-135' size-in-bits='64' id='type-id-113'/>
+    <pointer-type-def type-id='type-id-120' size-in-bits='64' id='type-id-121'/>
     <!-- Pool& -->
-    <reference-type-def kind='lvalue' type-id='type-id-76' size-in-bits='64' id='type-id-150'/>
+    <reference-type-def kind='lvalue' type-id='type-id-67' size-in-bits='64' id='type-id-124'/>
     <!-- Pool* -->
-    <pointer-type-def type-id='type-id-76' size-in-bits='64' id='type-id-117'/>
+    <pointer-type-def type-id='type-id-67' size-in-bits='64' id='type-id-123'/>
     <!-- PooledObj* -->
-    <pointer-type-def type-id='type-id-157' size-in-bits='64' id='type-id-241'/>
+    <pointer-type-def type-id='type-id-115' size-in-bits='64' id='type-id-125'/>
     <!-- PwlArc* -->
-    <pointer-type-def type-id='type-id-210' size-in-bits='64' id='type-id-194'/>
+    <pointer-type-def type-id='type-id-126' size-in-bits='64' id='type-id-118'/>
     <!-- TrimVertex* -->
-    <pointer-type-def type-id='type-id-172' size-in-bits='64' id='type-id-141'/>
+    <pointer-type-def type-id='type-id-128' size-in-bits='64' id='type-id-127'/>
     <!-- char* -->
-    <pointer-type-def type-id='type-id-143' size-in-bits='64' id='type-id-115'/>
+    <pointer-type-def type-id='type-id-106' size-in-bits='64' id='type-id-107'/>
     <!-- const char -->
-    <qualified-type-def type-id='type-id-143' const='yes' id='type-id-166'/>
+    <qualified-type-def type-id='type-id-106' const='yes' id='type-id-130'/>
     <!-- const char* -->
-    <pointer-type-def type-id='type-id-166' size-in-bits='64' id='type-id-116'/>
+    <pointer-type-def type-id='type-id-130' size-in-bits='64' id='type-id-84'/>
     <!-- const int -->
-    <qualified-type-def type-id='type-id-11' const='yes' id='type-id-174'/>
+    <qualified-type-def type-id='type-id-8' const='yes' id='type-id-116'/>
+    <!-- struct BezierArc -->
+    <class-decl name='BezierArc' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-129'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/arcsorter.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- REAL[4] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='128' id='type-id-127'>
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='128' id='type-id-131'>
       <!-- <anonymous range>[4] -->
-      <subrange length='4' type-id='type-id-3' id='type-id-65'/>
+      <subrange length='4' type-id='type-id-3' id='type-id-61'/>
     </array-type-def>
     <!-- REAL[][24][24] -->
-    <array-type-def dimensions='3' type-id='type-id-1' size-in-bits='infinite' id='type-id-145'>
+    <array-type-def dimensions='3' type-id='type-id-1' size-in-bits='infinite' id='type-id-132'>
       <!-- <anonymous range>[] -->
-      <subrange length='infinite' id='type-id-170'/>
+      <subrange length='infinite' id='type-id-133'/>
       <!-- <anonymous range>[24] -->
-      <subrange length='24' type-id='type-id-3' id='type-id-171'/>
+      <subrange length='24' type-id='type-id-3' id='type-id-134'/>
       <!-- <anonymous range>[24] -->
-      <subrange length='24' type-id='type-id-3' id='type-id-171'/>
+      <subrange length='24' type-id='type-id-3' id='type-id-134'/>
     </array-type-def>
-    <!-- struct Renderhints -->
-    <class-decl name='Renderhints' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/renderhints.h' line='41' column='1' id='type-id-71'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- REAL Renderhints::display_method -->
-        <var-decl name='display_method' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/renderhints.h' line='49' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- REAL Renderhints::errorchecking -->
-        <var-decl name='errorchecking' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/renderhints.h' line='50' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- REAL Renderhints::subdivisions -->
-        <var-decl name='subdivisions' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/renderhints.h' line='51' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='96'>
-        <!-- REAL Renderhints::tmp1 -->
-        <var-decl name='tmp1' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/renderhints.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int Renderhints::displaydomain -->
-        <var-decl name='displaydomain' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/renderhints.h' line='54' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int Renderhints::maxsubdivisions -->
-        <var-decl name='maxsubdivisions' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/renderhints.h' line='55' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- int Renderhints::wiretris -->
-        <var-decl name='wiretris' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/renderhints.h' line='56' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='224'>
-        <!-- int Renderhints::wirequads -->
-        <var-decl name='wirequads' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/renderhints.h' line='57' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Renderhints::Renderhints() -->
-        <function-decl name='Renderhints' filepath='libnurbs/internals/renderhints.h' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Renderhints*' -->
-          <parameter type-id='type-id-118' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Sorter -->
-    <class-decl name='Sorter' size-in-bits='128' visibility='default' filepath='libnurbs/internals/sorter.h' line='36' column='1' id='type-id-176'>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- int Sorter::es -->
-        <var-decl name='es' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/sorter.h' line='49' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Sorter::Sorter(int) -->
-        <function-decl name='Sorter' filepath='libnurbs/internals/sorter.cc' line='44' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-202' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes' vtable-offset='-1'>
-        <!-- Sorter::~Sorter(int) -->
-        <function-decl name='~Sorter' filepath='libnurbs/internals/sorter.h' line='39' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-202' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='2'>
-        <!-- int Sorter::qscmp(char*, char*) -->
-        <function-decl name='qscmp' mangled-name='_ZN6Sorter5qscmpEPcS0_' filepath='libnurbs/internals/sorter.cc' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-202' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- int -->
-          <return type-id='type-id-11'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='3'>
-        <!-- void Sorter::qsexc(char*, char*) -->
-        <function-decl name='qsexc' mangled-name='_ZN6Sorter5qsexcEPcS0_' filepath='libnurbs/internals/sorter.cc' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-202' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='4'>
-        <!-- void Sorter::qstexc(char*, char*, char*) -->
-        <function-decl name='qstexc' mangled-name='_ZN6Sorter6qstexcEPcS0_S0_' filepath='libnurbs/internals/sorter.cc' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Sorter*' -->
-          <parameter type-id='type-id-202' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class ArcSorter -->
-    <class-decl name='ArcSorter' size-in-bits='192' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='44' column='1' id='type-id-242'>
-      <!-- class Sorter -->
-      <base-class access='private' layout-offset-in-bits='0' type-id='type-id-176'/>
-      <data-member access='protected' layout-offset-in-bits='128'>
-        <!-- Subdivider& ArcSorter::subdivider -->
-        <var-decl name='subdivider' type-id='type-id-243' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='50' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- ArcSorter::ArcSorter(Subdivider&) -->
-        <function-decl name='ArcSorter' filepath='libnurbs/internals/arcsorter.cc' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcSorter*' -->
-          <parameter type-id='type-id-244' is-artificial='yes'/>
-          <!-- parameter of type 'Subdivider&' -->
-          <parameter type-id='type-id-245'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='2'>
-        <!-- int ArcSorter::qscmp(char*, char*) -->
-        <function-decl name='qscmp' mangled-name='_ZN9ArcSorter5qscmpEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcSorter*' -->
-          <parameter type-id='type-id-244' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- int -->
-          <return type-id='type-id-11'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='3'>
-        <!-- void ArcSorter::qsexc(char*, char*) -->
-        <function-decl name='qsexc' mangled-name='_ZN9ArcSorter5qsexcEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcSorter*' -->
-          <parameter type-id='type-id-244' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' vtable-offset='4'>
-        <!-- void ArcSorter::qstexc(char*, char*, char*) -->
-        <function-decl name='qstexc' mangled-name='_ZN9ArcSorter6qstexcEPcS0_S0_' filepath='libnurbs/internals/arcsorter.cc' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'ArcSorter*' -->
-          <parameter type-id='type-id-244' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class FlistSorter -->
-    <class-decl name='FlistSorter' size-in-bits='128' visibility='default' filepath='libnurbs/internals/flistsorter.h' line='42' column='1' id='type-id-154'>
-      <!-- class Sorter -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-176'/>
-      <member-function access='private' constructor='yes'>
-        <!-- FlistSorter::FlistSorter() -->
-        <function-decl name='FlistSorter' filepath='libnurbs/internals/flistsorter.cc' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-177' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes' vtable-offset='-1'>
-        <!-- FlistSorter::~FlistSorter(int) -->
-        <function-decl name='~FlistSorter' filepath='libnurbs/internals/flistsorter.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-177' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='2'>
-        <!-- int FlistSorter::qscmp(char*, char*) -->
-        <function-decl name='qscmp' mangled-name='_ZN11FlistSorter5qscmpEPcS0_' filepath='libnurbs/internals/flistsorter.cc' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-177' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- int -->
-          <return type-id='type-id-11'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='3'>
-        <!-- void FlistSorter::qsexc(char*, char*) -->
-        <function-decl name='qsexc' mangled-name='_ZN11FlistSorter5qsexcEPcS0_' filepath='libnurbs/internals/flistsorter.cc' line='62' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-177' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='protected' vtable-offset='4'>
-        <!-- void FlistSorter::qstexc(char*, char*, char*) -->
-        <function-decl name='qstexc' mangled-name='_ZN11FlistSorter6qstexcEPcS0_S0_' filepath='libnurbs/internals/flistsorter.cc' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'FlistSorter*' -->
-          <parameter type-id='type-id-177' is-artificial='yes'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct TrimVertexPool -->
-    <class-decl name='TrimVertexPool' size-in-bits='2624' is-struct='yes' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='45' column='1' id='type-id-77'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Pool TrimVertexPool::pool -->
-        <var-decl name='pool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2496'>
-        <!-- TrimVertex** TrimVertexPool::vlist -->
-        <var-decl name='vlist' type-id='type-id-130' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='53' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2560'>
-        <!-- int TrimVertexPool::nextvlistslot -->
-        <var-decl name='nextvlistslot' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='54' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='2592'>
-        <!-- int TrimVertexPool::vlistsize -->
-        <var-decl name='vlistsize' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='55' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- TrimVertexPool::TrimVertexPool() -->
-        <function-decl name='TrimVertexPool' filepath='libnurbs/internals/trimvertpool.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'TrimVertexPool*' -->
-          <parameter type-id='type-id-131' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' destructor='yes'>
-        <!-- TrimVertexPool::~TrimVertexPool(int) -->
-        <function-decl name='~TrimVertexPool' filepath='libnurbs/internals/trimvertpool.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'TrimVertexPool*' -->
-          <parameter type-id='type-id-131' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct Quilt -->
-    <class-decl name='Quilt' size-in-bits='896' is-struct='yes' visibility='default' filepath='libnurbs/internals/quilt.h' line='64' column='1' id='type-id-140'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- Mapdesc* Quilt::mapdesc -->
-        <var-decl name='mapdesc' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/quilt.h' line='67' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- REAL* Quilt::cpts -->
-        <var-decl name='cpts' type-id='type-id-16' visibility='default' filepath='libnurbs/internals/quilt.h' line='68' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- Quiltspec Quilt::qspec[2] -->
-        <var-decl name='qspec' type-id='type-id-185' visibility='default' filepath='libnurbs/internals/quilt.h' line='69' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='768'>
-        <!-- Quiltspec_ptr Quilt::eqspec -->
-        <var-decl name='eqspec' type-id='type-id-186' visibility='default' filepath='libnurbs/internals/quilt.h' line='70' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='832'>
-        <!-- Quilt* Quilt::next -->
-        <var-decl name='next' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/quilt.h' line='71' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Quilt::Quilt(Mapdesc*) -->
-        <function-decl name='Quilt' filepath='libnurbs/internals/quilt.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Quilt*' -->
-          <parameter type-id='type-id-125' is-artificial='yes'/>
-          <!-- parameter of type 'Mapdesc*' -->
-          <parameter type-id='type-id-107'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Bin -->
-    <class-decl name='Bin' size-in-bits='128' visibility='default' filepath='libnurbs/internals/bin.h' line='44' column='1' id='type-id-123'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Arc_ptr Bin::head -->
-        <var-decl name='head' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/bin.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Arc_ptr Bin::current -->
-        <var-decl name='current' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/bin.h' line='47' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Bin::Bin() -->
-        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Bin::~Bin(int) -->
-        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Bin*' -->
-          <parameter type-id='type-id-151' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
     <!-- class ArcTessellator -->
-    <class-decl name='ArcTessellator' size-in-bits='128' visibility='default' filepath='libnurbs/internals/arctess.h' line='47' column='1' id='type-id-121'>
+    <class-decl name='ArcTessellator' size-in-bits='128' visibility='default' filepath='libnurbs/internals/arctess.h' line='47' column='1' id='type-id-135'>
       <data-member access='private' static='yes'>
         <!-- static REAL ArcTessellator::gl_Bernstein[][24][24] -->
-        <var-decl name='gl_Bernstein' type-id='type-id-145' mangled-name='_ZN14ArcTessellator12gl_BernsteinE' visibility='default' filepath='libnurbs/internals/arctess.h' line='60' column='1'/>
+        <var-decl name='gl_Bernstein' type-id='type-id-132' mangled-name='_ZN14ArcTessellator12gl_BernsteinE' visibility='default' filepath='libnurbs/internals/arctess.h' line='60' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- Pool& ArcTessellator::pwlarcpool -->
-        <var-decl name='pwlarcpool' type-id='type-id-146' visibility='default' filepath='libnurbs/internals/arctess.h' line='61' column='1'/>
+        <var-decl name='pwlarcpool' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/arctess.h' line='61' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- TrimVertexPool& ArcTessellator::trimvertexpool -->
-        <var-decl name='trimvertexpool' type-id='type-id-147' visibility='default' filepath='libnurbs/internals/arctess.h' line='62' column='1'/>
+        <var-decl name='trimvertexpool' type-id='type-id-136' visibility='default' filepath='libnurbs/internals/arctess.h' line='62' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- ArcTessellator::ArcTessellator(TrimVertexPool&, Pool&) -->
         <function-decl name='ArcTessellator' filepath='libnurbs/internals/arctess.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <parameter type-id='type-id-137' is-artificial='yes'/>
           <!-- parameter of type 'TrimVertexPool&' -->
-          <parameter type-id='type-id-149'/>
+          <parameter type-id='type-id-136'/>
           <!-- parameter of type 'Pool&' -->
-          <parameter type-id='type-id-150'/>
+          <parameter type-id='type-id-124'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- ArcTessellator::~ArcTessellator(int) -->
         <function-decl name='~ArcTessellator' filepath='libnurbs/internals/arctess.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'ArcTessellator*' -->
-          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <parameter type-id='type-id-137' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' static='yes'>
+        <!-- void ArcTessellator::trim_power_coeffs(REAL*, int) -->
+        <function-decl name='trim_power_coeffs' mangled-name='_ZN14ArcTessellator17trim_power_coeffsEP9BezierArcPfi' filepath='libnurbs/internals/arctess.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'BezierArc*' -->
+          <parameter type-id='type-id-117'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void ArcTessellator::pwl_left(Arc_ptr, REAL, REAL, REAL, REAL) -->
+        <function-decl name='pwl_left' mangled-name='_ZN14ArcTessellator8pwl_leftEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-137' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void ArcTessellator::tessellateNonlinear(Arc_ptr, REAL, REAL, int) -->
+        <function-decl name='tessellateNonlinear' mangled-name='_ZN14ArcTessellator19tessellateNonlinearEP3Arcffi' filepath='libnurbs/internals/arctess.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-137' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void ArcTessellator::pwl(Arc_ptr, REAL, REAL, REAL, REAL, REAL) -->
+        <function-decl name='pwl' mangled-name='_ZN14ArcTessellator3pwlEP3Arcfffff' filepath='libnurbs/internals/arctess.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-137' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void ArcTessellator::bezier(Arc_ptr, REAL, REAL, REAL, REAL) -->
+        <function-decl name='bezier' mangled-name='_ZN14ArcTessellator6bezierEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-137' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void ArcTessellator::pwl_bottom(Arc_ptr, REAL, REAL, REAL, REAL) -->
+        <function-decl name='pwl_bottom' mangled-name='_ZN14ArcTessellator10pwl_bottomEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-137' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void ArcTessellator::pwl_top(Arc_ptr, REAL, REAL, REAL, REAL) -->
+        <function-decl name='pwl_top' mangled-name='_ZN14ArcTessellator7pwl_topEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-137' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void ArcTessellator::pwl_right(Arc_ptr, REAL, REAL, REAL, REAL) -->
+        <function-decl name='pwl_right' mangled-name='_ZN14ArcTessellator9pwl_rightEP3Arcffff' filepath='libnurbs/internals/arctess.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-137' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void ArcTessellator::tessellateLinear(Arc_ptr, REAL, REAL, int) -->
+        <function-decl name='tessellateLinear' mangled-name='_ZN14ArcTessellator16tessellateLinearEP3Arcffi' filepath='libnurbs/internals/arctess.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcTessellator*' -->
+          <parameter type-id='type-id-137' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- struct Backend -->
+    <class-decl name='Backend' size-in-bits='640' is-struct='yes' visibility='default' filepath='libnurbs/internals/backend.h' line='46' column='1' id='type-id-64'>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- BasicCurveEvaluator& Backend::curveEvaluator -->
+        <var-decl name='curveEvaluator' type-id='type-id-79' visibility='default' filepath='libnurbs/internals/backend.h' line='48' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='64'>
+        <!-- BasicSurfaceEvaluator& Backend::surfaceEvaluator -->
+        <var-decl name='surfaceEvaluator' type-id='type-id-80' visibility='default' filepath='libnurbs/internals/backend.h' line='49' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='128'>
+        <!-- int Backend::wireframetris -->
+        <var-decl name='wireframetris' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/backend.h' line='105' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='160'>
+        <!-- int Backend::wireframequads -->
+        <var-decl name='wireframequads' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/backend.h' line='106' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='192'>
+        <!-- int Backend::npts -->
+        <var-decl name='npts' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/backend.h' line='107' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='224'>
+        <!-- REAL Backend::mesh[3][4] -->
+        <var-decl name='mesh' type-id='type-id-138' visibility='default' filepath='libnurbs/internals/backend.h' line='108' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='608'>
+        <!-- int Backend::meshindex -->
+        <var-decl name='meshindex' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/backend.h' line='109' column='1'/>
+      </data-member>
+      <member-function access='public' constructor='yes'>
+        <!-- Backend::Backend(BasicCurveEvaluator&, BasicSurfaceEvaluator&) -->
+        <function-decl name='Backend' filepath='libnurbs/internals/backend.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'BasicCurveEvaluator&' -->
+          <parameter type-id='type-id-79'/>
+          <!-- parameter of type 'BasicSurfaceEvaluator&' -->
+          <parameter type-id='type-id-80'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::bgnsurf(int, int, long int) -->
+        <function-decl name='bgnsurf' mangled-name='_ZN7Backend7bgnsurfEiil' filepath='libnurbs/internals/backend.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::patch(REAL, REAL, REAL, REAL) -->
+        <function-decl name='patch' mangled-name='_ZN7Backend5patchEffff' filepath='libnurbs/internals/backend.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::surfbbox(long int, REAL*, REAL*) -->
+        <function-decl name='surfbbox' mangled-name='_ZN7Backend8surfbboxElPfS0_' filepath='libnurbs/internals/backend.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::surfpts(long int, REAL*, long int, long int, int, int, REAL, REAL, REAL, REAL) -->
+        <function-decl name='surfpts' mangled-name='_ZN7Backend7surfptsElPflliiffff' filepath='libnurbs/internals/backend.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::surfgrid(REAL, REAL, long int, REAL, REAL, long int) -->
+        <function-decl name='surfgrid' mangled-name='_ZN7Backend8surfgridEfflffl' filepath='libnurbs/internals/backend.h' line='60' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::surfmesh(long int, long int, long int, long int) -->
+        <function-decl name='surfmesh' mangled-name='_ZN7Backend8surfmeshEllll' filepath='libnurbs/internals/backend.h' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::endsurf() -->
+        <function-decl name='endsurf' mangled-name='_ZN7Backend7endsurfEv' filepath='libnurbs/internals/backend.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::bgntfan() -->
+        <function-decl name='bgntfan' mangled-name='_ZN7Backend7bgntfanEv' filepath='libnurbs/internals/backend.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::endtfan() -->
+        <function-decl name='endtfan' mangled-name='_ZN7Backend7endtfanEv' filepath='libnurbs/internals/backend.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::bgnqstrip() -->
+        <function-decl name='bgnqstrip' mangled-name='_ZN7Backend9bgnqstripEv' filepath='libnurbs/internals/backend.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::endqstrip() -->
+        <function-decl name='endqstrip' mangled-name='_ZN7Backend9endqstripEv' filepath='libnurbs/internals/backend.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::evalUStrip(int, REAL, REAL*, int, REAL, REAL*) -->
+        <function-decl name='evalUStrip' mangled-name='_ZN7Backend10evalUStripEifPfifS0_' filepath='libnurbs/internals/backend.h' line='80' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::evalVStrip(int, REAL, REAL*, int, REAL, REAL*) -->
+        <function-decl name='evalVStrip' mangled-name='_ZN7Backend10evalVStripEifPfifS0_' filepath='libnurbs/internals/backend.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::bgntmesh(const char*) -->
+        <function-decl name='bgntmesh' mangled-name='_ZN7Backend8bgntmeshEPKc' filepath='libnurbs/internals/backend.h' line='62' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-84'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::tmeshvertNOGE(TrimVertex*) -->
+        <function-decl name='tmeshvertNOGE' mangled-name='_ZN7Backend13tmeshvertNOGEEP10TrimVertex' filepath='libnurbs/internals/backend.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::tmeshvertNOGE_BU(TrimVertex*) -->
+        <function-decl name='tmeshvertNOGE_BU' mangled-name='_ZN7Backend16tmeshvertNOGE_BUEP10TrimVertex' filepath='libnurbs/internals/backend.h' line='87' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::tmeshvertNOGE_BV(TrimVertex*) -->
+        <function-decl name='tmeshvertNOGE_BV' mangled-name='_ZN7Backend16tmeshvertNOGE_BVEP10TrimVertex' filepath='libnurbs/internals/backend.h' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::preEvaluateBU(REAL) -->
+        <function-decl name='preEvaluateBU' mangled-name='_ZN7Backend13preEvaluateBUEf' filepath='libnurbs/internals/backend.h' line='89' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::preEvaluateBV(REAL) -->
+        <function-decl name='preEvaluateBV' mangled-name='_ZN7Backend13preEvaluateBVEf' filepath='libnurbs/internals/backend.h' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::tmeshvert(TrimVertex*) -->
+        <function-decl name='tmeshvert' mangled-name='_ZN7Backend9tmeshvertEP10TrimVertex' filepath='libnurbs/internals/backend.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::tmeshvert(REAL, REAL) -->
+        <function-decl name='tmeshvert' mangled-name='_ZN7Backend9tmeshvertEff' filepath='libnurbs/internals/backend.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::tmeshvert(GridVertex*) -->
+        <function-decl name='tmeshvert' mangled-name='_ZN7Backend9tmeshvertEP10GridVertex' filepath='libnurbs/internals/backend.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'GridVertex*' -->
+          <parameter type-id='type-id-140'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::tmeshvert(GridTrimVertex*) -->
+        <function-decl name='tmeshvert' mangled-name='_ZN7Backend9tmeshvertEP14GridTrimVertex' filepath='libnurbs/internals/backend.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'GridTrimVertex*' -->
+          <parameter type-id='type-id-141'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::swaptmesh() -->
+        <function-decl name='swaptmesh' mangled-name='_ZN7Backend9swaptmeshEv' filepath='libnurbs/internals/backend.h' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::endtmesh() -->
+        <function-decl name='endtmesh' mangled-name='_ZN7Backend8endtmeshEv' filepath='libnurbs/internals/backend.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::bgnoutline() -->
+        <function-decl name='bgnoutline' mangled-name='_ZN7Backend10bgnoutlineEv' filepath='libnurbs/internals/backend.h' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::linevert(TrimVertex*) -->
+        <function-decl name='linevert' mangled-name='_ZN7Backend8linevertEP10TrimVertex' filepath='libnurbs/internals/backend.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::linevert(GridVertex*) -->
+        <function-decl name='linevert' mangled-name='_ZN7Backend8linevertEP10GridVertex' filepath='libnurbs/internals/backend.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'GridVertex*' -->
+          <parameter type-id='type-id-140'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::endoutline() -->
+        <function-decl name='endoutline' mangled-name='_ZN7Backend10endoutlineEv' filepath='libnurbs/internals/backend.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::triangle(TrimVertex*, TrimVertex*, TrimVertex*) -->
+        <function-decl name='triangle' mangled-name='_ZN7Backend8triangleEP10TrimVertexS1_S1_' filepath='libnurbs/internals/backend.h' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::bgncurv() -->
+        <function-decl name='bgncurv' mangled-name='_ZN7Backend7bgncurvEv' filepath='libnurbs/internals/backend.h' line='94' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::segment(REAL, REAL) -->
+        <function-decl name='segment' mangled-name='_ZN7Backend7segmentEff' filepath='libnurbs/internals/backend.h' line='95' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::curvpts(long int, REAL*, long int, int, REAL, REAL) -->
+        <function-decl name='curvpts' mangled-name='_ZN7Backend7curvptsElPfliff' filepath='libnurbs/internals/backend.h' line='96' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::curvgrid(REAL, REAL, long int) -->
+        <function-decl name='curvgrid' mangled-name='_ZN7Backend8curvgridEffl' filepath='libnurbs/internals/backend.h' line='97' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::curvmesh(long int, long int) -->
+        <function-decl name='curvmesh' mangled-name='_ZN7Backend8curvmeshEll' filepath='libnurbs/internals/backend.h' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::curvpt(REAL) -->
+        <function-decl name='curvpt' mangled-name='_ZN7Backend6curvptEf' filepath='libnurbs/internals/backend.h' line='99' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::bgnline() -->
+        <function-decl name='bgnline' mangled-name='_ZN7Backend7bgnlineEv' filepath='libnurbs/internals/backend.h' line='100' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::endline() -->
+        <function-decl name='endline' mangled-name='_ZN7Backend7endlineEv' filepath='libnurbs/internals/backend.h' line='101' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Backend::endcurv() -->
+        <function-decl name='endcurv' mangled-name='_ZN7Backend7endcurvEv' filepath='libnurbs/internals/backend.h' line='102' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- class Bin -->
+    <class-decl name='Bin' size-in-bits='128' visibility='default' filepath='libnurbs/internals/bin.h' line='44' column='1' id='type-id-142'>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- Arc_ptr Bin::head -->
+        <var-decl name='head' type-id='type-id-112' visibility='default' filepath='libnurbs/internals/bin.h' line='46' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='64'>
+        <!-- Arc_ptr Bin::current -->
+        <var-decl name='current' type-id='type-id-112' visibility='default' filepath='libnurbs/internals/bin.h' line='47' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- Bin::Bin() -->
+        <function-decl name='Bin' filepath='libnurbs/internals/bin.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes'>
+        <!-- Bin::~Bin(int) -->
+        <function-decl name='~Bin' filepath='libnurbs/internals/bin.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Arc_ptr Bin::nextarc() -->
+        <function-decl name='nextarc' mangled-name='_ZN3Bin7nextarcEv' filepath='libnurbs/internals/bin.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- typedef Arc_ptr -->
+          <return type-id='type-id-112'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Arc_ptr Bin::firstarc() -->
+        <function-decl name='firstarc' mangled-name='_ZN3Bin8firstarcEv' filepath='libnurbs/internals/bin.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- typedef Arc_ptr -->
+          <return type-id='type-id-112'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Bin::markall() -->
+        <function-decl name='markall' mangled-name='_ZN3Bin7markallEv' filepath='libnurbs/internals/bin.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Arc_ptr Bin::removearc() -->
+        <function-decl name='removearc' mangled-name='_ZN3Bin9removearcEv' filepath='libnurbs/internals/bin.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- typedef Arc_ptr -->
+          <return type-id='type-id-112'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Bin::remove_this_arc(Arc_ptr) -->
+        <function-decl name='remove_this_arc' mangled-name='_ZN3Bin15remove_this_arcEP3Arc' filepath='libnurbs/internals/bin.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Bin::numarcs() -->
+        <function-decl name='numarcs' mangled-name='_ZN3Bin7numarcsEv' filepath='libnurbs/internals/bin.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Bin::adopt() -->
+        <function-decl name='adopt' mangled-name='_ZN3Bin5adoptEv' filepath='libnurbs/internals/bin.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Bin::show(const char*) -->
+        <function-decl name='show' mangled-name='_ZN3Bin4showEPKc' filepath='libnurbs/internals/bin.h' line='60' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-84'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Bin::listBezier() -->
+        <function-decl name='listBezier' mangled-name='_ZN3Bin10listBezierEv' filepath='libnurbs/internals/bin.h' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Bin::addarc(Arc_ptr) -->
+        <function-decl name='addarc' mangled-name='_ZN3Bin6addarcEP3Arc' filepath='libnurbs/internals/bin.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Bin::isnonempty() -->
+        <function-decl name='isnonempty' mangled-name='_ZN3Bin10isnonemptyEv' filepath='libnurbs/internals/bin.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Bin*' -->
+          <parameter type-id='type-id-143' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- struct Curvelist -->
-    <class-decl name='Curvelist' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/curvelist.h' line='47' column='1' id='type-id-246'>
+    <class-decl name='Curvelist' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/curvelist.h' line='47' column='1' id='type-id-144'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- Curve* Curvelist::curve -->
-        <var-decl name='curve' type-id='type-id-247' visibility='default' filepath='libnurbs/internals/curvelist.h' line='57' column='1'/>
+        <var-decl name='curve' type-id='type-id-145' visibility='default' filepath='libnurbs/internals/curvelist.h' line='57' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- float Curvelist::range[3] -->
-        <var-decl name='range' type-id='type-id-248' visibility='default' filepath='libnurbs/internals/curvelist.h' line='58' column='1'/>
+        <var-decl name='range' type-id='type-id-146' visibility='default' filepath='libnurbs/internals/curvelist.h' line='58' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='160'>
         <!-- int Curvelist::needsSubdivision -->
-        <var-decl name='needsSubdivision' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/curvelist.h' line='59' column='1'/>
+        <var-decl name='needsSubdivision' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/curvelist.h' line='59' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='192'>
         <!-- float Curvelist::stepsize -->
-        <var-decl name='stepsize' type-id='type-id-28' visibility='default' filepath='libnurbs/internals/curvelist.h' line='60' column='1'/>
+        <var-decl name='stepsize' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/curvelist.h' line='60' column='1'/>
       </data-member>
       <member-function access='public' constructor='yes'>
         <!-- Curvelist::Curvelist(Quilt*, REAL, REAL) -->
         <function-decl name='Curvelist' filepath='libnurbs/internals/curvelist.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Curvelist*' -->
-          <parameter type-id='type-id-249' is-artificial='yes'/>
+          <parameter type-id='type-id-147' is-artificial='yes'/>
           <!-- parameter of type 'Quilt*' -->
-          <parameter type-id='type-id-125'/>
+          <parameter type-id='type-id-148'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
         <!-- Curvelist::Curvelist(Curvelist&, REAL) -->
         <function-decl name='Curvelist' filepath='libnurbs/internals/curvelist.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Curvelist*' -->
-          <parameter type-id='type-id-249' is-artificial='yes'/>
+          <parameter type-id='type-id-147' is-artificial='yes'/>
           <!-- parameter of type 'Curvelist&' -->
-          <parameter type-id='type-id-250'/>
+          <parameter type-id='type-id-149'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' destructor='yes'>
         <!-- Curvelist::~Curvelist(int) -->
         <function-decl name='~Curvelist' filepath='libnurbs/internals/curvelist.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Curvelist*' -->
-          <parameter type-id='type-id-249' is-artificial='yes'/>
+          <parameter type-id='type-id-147' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Curvelist::needsSamplingSubdivision() -->
+        <function-decl name='needsSamplingSubdivision' mangled-name='_ZN9Curvelist24needsSamplingSubdivisionEv' filepath='libnurbs/internals/curvelist.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Curvelist*' -->
+          <parameter type-id='type-id-147' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Curvelist::getstepsize() -->
+        <function-decl name='getstepsize' mangled-name='_ZN9Curvelist11getstepsizeEv' filepath='libnurbs/internals/curvelist.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Curvelist*' -->
+          <parameter type-id='type-id-147' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Curvelist::cullCheck() -->
+        <function-decl name='cullCheck' mangled-name='_ZN9Curvelist9cullCheckEv' filepath='libnurbs/internals/curvelist.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Curvelist*' -->
+          <parameter type-id='type-id-147' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- struct Backend -->
-    <class-decl name='Backend' size-in-bits='640' is-struct='yes' visibility='default' filepath='libnurbs/internals/backend.h' line='46' column='1' id='type-id-73'>
+    <!-- class Flist -->
+    <class-decl name='Flist' size-in-bits='320' visibility='default' filepath='libnurbs/internals/flist.h' line='42' column='1' id='type-id-150'>
       <data-member access='private' layout-offset-in-bits='0'>
-        <!-- BasicCurveEvaluator& Backend::curveEvaluator -->
-        <var-decl name='curveEvaluator' type-id='type-id-103' visibility='default' filepath='libnurbs/internals/backend.h' line='48' column='1'/>
+        <!-- REAL* Flist::pts -->
+        <var-decl name='pts' type-id='type-id-22' visibility='default' filepath='libnurbs/internals/flist.h' line='44' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
-        <!-- BasicSurfaceEvaluator& Backend::surfaceEvaluator -->
-        <var-decl name='surfaceEvaluator' type-id='type-id-104' visibility='default' filepath='libnurbs/internals/backend.h' line='49' column='1'/>
+        <!-- int Flist::npts -->
+        <var-decl name='npts' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/flist.h' line='45' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='96'>
+        <!-- int Flist::start -->
+        <var-decl name='start' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/flist.h' line='46' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
-        <!-- int Backend::wireframetris -->
-        <var-decl name='wireframetris' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/backend.h' line='105' column='1'/>
+        <!-- int Flist::end -->
+        <var-decl name='end' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/flist.h' line='47' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='160'>
-        <!-- int Backend::wireframequads -->
-        <var-decl name='wireframequads' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/backend.h' line='106' column='1'/>
+      <data-member access='protected' layout-offset-in-bits='192'>
+        <!-- FlistSorter Flist::sorter -->
+        <var-decl name='sorter' type-id='type-id-151' visibility='default' filepath='libnurbs/internals/flist.h' line='56' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='192'>
-        <!-- int Backend::npts -->
-        <var-decl name='npts' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/backend.h' line='107' column='1'/>
+      <member-function access='private' constructor='yes'>
+        <!-- Flist::Flist() -->
+        <function-decl name='Flist' filepath='libnurbs/internals/flist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Flist*' -->
+          <parameter type-id='type-id-152' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes'>
+        <!-- Flist::~Flist(int) -->
+        <function-decl name='~Flist' filepath='libnurbs/internals/flist.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Flist*' -->
+          <parameter type-id='type-id-152' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Flist::add(REAL) -->
+        <function-decl name='add' mangled-name='_ZN5Flist3addEf' filepath='libnurbs/internals/flist.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Flist*' -->
+          <parameter type-id='type-id-152' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Flist::taper(REAL, REAL) -->
+        <function-decl name='taper' mangled-name='_ZN5Flist5taperEff' filepath='libnurbs/internals/flist.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Flist*' -->
+          <parameter type-id='type-id-152' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Flist::grow(int) -->
+        <function-decl name='grow' mangled-name='_ZN5Flist4growEi' filepath='libnurbs/internals/flist.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Flist*' -->
+          <parameter type-id='type-id-152' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Flist::filter() -->
+        <function-decl name='filter' mangled-name='_ZN5Flist6filterEv' filepath='libnurbs/internals/flist.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Flist*' -->
+          <parameter type-id='type-id-152' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- class FlistSorter -->
+    <class-decl name='FlistSorter' size-in-bits='128' visibility='default' filepath='libnurbs/internals/flistsorter.h' line='42' column='1' id='type-id-151'>
+      <!-- class Sorter -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-153'/>
+      <member-function access='private' constructor='yes'>
+        <!-- FlistSorter::FlistSorter() -->
+        <function-decl name='FlistSorter' filepath='libnurbs/internals/flistsorter.cc' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'FlistSorter*' -->
+          <parameter type-id='type-id-154' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void FlistSorter::qsort(REAL*, int) -->
+        <function-decl name='qsort' mangled-name='_ZN11FlistSorter5qsortEPfi' filepath='libnurbs/internals/flistsorter.cc' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'FlistSorter*' -->
+          <parameter type-id='type-id-154' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes' vtable-offset='-1'>
+        <!-- FlistSorter::~FlistSorter(int) -->
+        <function-decl name='~FlistSorter' filepath='libnurbs/internals/flistsorter.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'FlistSorter*' -->
+          <parameter type-id='type-id-154' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='protected' vtable-offset='2'>
+        <!-- int FlistSorter::qscmp(char*, char*) -->
+        <function-decl name='qscmp' mangled-name='_ZN11FlistSorter5qscmpEPcS0_' filepath='libnurbs/internals/flistsorter.cc' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'FlistSorter*' -->
+          <parameter type-id='type-id-154' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='protected' vtable-offset='3'>
+        <!-- void FlistSorter::qsexc(char*, char*) -->
+        <function-decl name='qsexc' mangled-name='_ZN11FlistSorter5qsexcEPcS0_' filepath='libnurbs/internals/flistsorter.cc' line='62' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'FlistSorter*' -->
+          <parameter type-id='type-id-154' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='protected' vtable-offset='4'>
+        <!-- void FlistSorter::qstexc(char*, char*, char*) -->
+        <function-decl name='qstexc' mangled-name='_ZN11FlistSorter6qstexcEPcS0_S0_' filepath='libnurbs/internals/flistsorter.cc' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'FlistSorter*' -->
+          <parameter type-id='type-id-154' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- struct JumpBuffer -->
+    <class-decl name='JumpBuffer' size-in-bits='1600' is-struct='yes' visibility='default' filepath='libnurbs/internals/mysetjmp.h' line='56' column='1' id='type-id-155'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- jmp_buf JumpBuffer::buf -->
+        <var-decl name='buf' type-id='type-id-156' visibility='default' filepath='libnurbs/internals/mysetjmp.h' line='57' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='224'>
-        <!-- REAL Backend::mesh[3][4] -->
-        <var-decl name='mesh' type-id='type-id-105' visibility='default' filepath='libnurbs/internals/backend.h' line='108' column='1'/>
+    </class-decl>
+    <!-- struct Patchlist -->
+    <class-decl name='Patchlist' size-in-bits='640' is-struct='yes' visibility='default' filepath='libnurbs/internals/patchlist.h' line='45' column='1' id='type-id-157'>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- Patch* Patchlist::patch -->
+        <var-decl name='patch' type-id='type-id-158' visibility='default' filepath='libnurbs/internals/patchlist.h' line='63' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='608'>
-        <!-- int Backend::meshindex -->
-        <var-decl name='meshindex' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/backend.h' line='109' column='1'/>
+      <data-member access='private' layout-offset-in-bits='64'>
+        <!-- int Patchlist::notInBbox -->
+        <var-decl name='notInBbox' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/patchlist.h' line='64' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='96'>
+        <!-- int Patchlist::needsSampling -->
+        <var-decl name='needsSampling' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/patchlist.h' line='65' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='128'>
+        <!-- Pspec Patchlist::pspec[2] -->
+        <var-decl name='pspec' type-id='type-id-159' visibility='default' filepath='libnurbs/internals/patchlist.h' line='66' column='1'/>
       </data-member>
       <member-function access='public' constructor='yes'>
-        <!-- Backend::Backend(BasicCurveEvaluator&, BasicSurfaceEvaluator&) -->
-        <function-decl name='Backend' filepath='libnurbs/internals/backend.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Backend*' -->
-          <parameter type-id='type-id-106' is-artificial='yes'/>
-          <!-- parameter of type 'BasicCurveEvaluator&' -->
-          <parameter type-id='type-id-88'/>
-          <!-- parameter of type 'BasicSurfaceEvaluator&' -->
-          <parameter type-id='type-id-89'/>
+        <!-- Patchlist::Patchlist(Quilt*, REAL*, REAL*) -->
+        <function-decl name='Patchlist' filepath='libnurbs/internals/patchlist.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' constructor='yes'>
+        <!-- Patchlist::Patchlist(Patchlist&, int, REAL) -->
+        <function-decl name='Patchlist' filepath='libnurbs/internals/patchlist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- parameter of type 'Patchlist&' -->
+          <parameter type-id='type-id-161'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' destructor='yes'>
+        <!-- Patchlist::~Patchlist(int) -->
+        <function-decl name='~Patchlist' filepath='libnurbs/internals/patchlist.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Patchlist::getRanges(REAL*) -->
+        <function-decl name='getRanges' mangled-name='_ZN9Patchlist9getRangesEPf' filepath='libnurbs/internals/patchlist.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Patchlist::needsSamplingSubdivision() -->
+        <function-decl name='needsSamplingSubdivision' mangled-name='_ZN9Patchlist24needsSamplingSubdivisionEv' filepath='libnurbs/internals/patchlist.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Patchlist::needsSubdivision(int) -->
+        <function-decl name='needsSubdivision' mangled-name='_ZN9Patchlist16needsSubdivisionEi' filepath='libnurbs/internals/patchlist.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Patchlist::needsNonSamplingSubdivision() -->
+        <function-decl name='needsNonSamplingSubdivision' mangled-name='_ZN9Patchlist27needsNonSamplingSubdivisionEv' filepath='libnurbs/internals/patchlist.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Patchlist::bbox() -->
+        <function-decl name='bbox' mangled-name='_ZN9Patchlist4bboxEv' filepath='libnurbs/internals/patchlist.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Patchlist::getstepsize() -->
+        <function-decl name='getstepsize' mangled-name='_ZN9Patchlist11getstepsizeEv' filepath='libnurbs/internals/patchlist.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Patchlist::cullCheck() -->
+        <function-decl name='cullCheck' mangled-name='_ZN9Patchlist9cullCheckEv' filepath='libnurbs/internals/patchlist.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- REAL Patchlist::getStepsize(int) -->
+        <function-decl name='getStepsize' mangled-name='_ZN9Patchlist11getStepsizeEi' filepath='libnurbs/internals/patchlist.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- typedef REAL -->
+          <return type-id='type-id-1'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Patchlist::get_uorder() -->
+        <function-decl name='get_uorder' mangled-name='_ZN9Patchlist10get_uorderEv' filepath='libnurbs/internals/patchlist.h' line='60' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Patchlist::get_vorder() -->
+        <function-decl name='get_vorder' mangled-name='_ZN9Patchlist10get_vorderEv' filepath='libnurbs/internals/patchlist.h' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchlist*' -->
+          <parameter type-id='type-id-160' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- struct Quilt -->
+    <class-decl name='Quilt' size-in-bits='896' is-struct='yes' visibility='default' filepath='libnurbs/internals/quilt.h' line='64' column='1' id='type-id-162'>
+      <!-- class PooledObj -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- Mapdesc* Quilt::mapdesc -->
+        <var-decl name='mapdesc' type-id='type-id-163' visibility='default' filepath='libnurbs/internals/quilt.h' line='67' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- REAL* Quilt::cpts -->
+        <var-decl name='cpts' type-id='type-id-22' visibility='default' filepath='libnurbs/internals/quilt.h' line='68' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- Quiltspec Quilt::qspec[2] -->
+        <var-decl name='qspec' type-id='type-id-164' visibility='default' filepath='libnurbs/internals/quilt.h' line='69' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='768'>
+        <!-- Quiltspec_ptr Quilt::eqspec -->
+        <var-decl name='eqspec' type-id='type-id-165' visibility='default' filepath='libnurbs/internals/quilt.h' line='70' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='832'>
+        <!-- Quilt* Quilt::next -->
+        <var-decl name='next' type-id='type-id-148' visibility='default' filepath='libnurbs/internals/quilt.h' line='71' column='1'/>
+      </data-member>
+      <member-function access='public' constructor='yes'>
+        <!-- Quilt::Quilt(Mapdesc*) -->
+        <function-decl name='Quilt' filepath='libnurbs/internals/quilt.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Quilt::getDimension() -->
+        <function-decl name='getDimension' mangled-name='_ZN5Quilt12getDimensionEv' filepath='libnurbs/internals/quilt.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Quilt::show() -->
+        <function-decl name='show' mangled-name='_ZN5Quilt4showEv' filepath='libnurbs/internals/quilt.h' line='87' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Quilt::select(REAL*, REAL*) -->
+        <function-decl name='select' mangled-name='_ZN5Quilt6selectEPfS0_' filepath='libnurbs/internals/quilt.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Quilt::findSampleRates(Flist&, Flist&) -->
+        <function-decl name='findSampleRates' mangled-name='_ZN5Quilt15findSampleRatesER5FlistS1_' filepath='libnurbs/internals/quilt.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'Flist&' -->
+          <parameter type-id='type-id-166'/>
+          <!-- parameter of type 'Flist&' -->
+          <parameter type-id='type-id-166'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Quilt::findRates(Flist&, Flist&, REAL*) -->
+        <function-decl name='findRates' mangled-name='_ZN5Quilt9findRatesER5FlistS1_Pf' filepath='libnurbs/internals/quilt.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'Flist&' -->
+          <parameter type-id='type-id-166'/>
+          <!-- parameter of type 'Flist&' -->
+          <parameter type-id='type-id-166'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Quilt::getRange(REAL*, REAL*, int, Flist&) -->
+        <function-decl name='getRange' mangled-name='_ZN5Quilt8getRangeEPfS0_iR5Flist' filepath='libnurbs/internals/quilt.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'Flist&' -->
+          <parameter type-id='type-id-166'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Quilt::getRange(REAL*, REAL*, Flist&) -->
+        <function-decl name='getRange' mangled-name='_ZN5Quilt8getRangeEPfS0_R5Flist' filepath='libnurbs/internals/quilt.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'Flist&' -->
+          <parameter type-id='type-id-166'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Quilt::getRange(REAL*, REAL*, Flist&, Flist&) -->
+        <function-decl name='getRange' mangled-name='_ZN5Quilt8getRangeEPfS0_R5FlistS2_' filepath='libnurbs/internals/quilt.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'Flist&' -->
+          <parameter type-id='type-id-166'/>
+          <!-- parameter of type 'Flist&' -->
+          <parameter type-id='type-id-166'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Quilt::isCulled() -->
+        <function-decl name='isCulled' mangled-name='_ZN5Quilt8isCulledEv' filepath='libnurbs/internals/quilt.h' line='81' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Quilt::download(Backend&) -->
+        <function-decl name='download' mangled-name='_ZN5Quilt8downloadER7Backend' filepath='libnurbs/internals/quilt.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'Backend&' -->
+          <parameter type-id='type-id-167'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Quilt::downloadAll(REAL*, REAL*, Backend&) -->
+        <function-decl name='downloadAll' mangled-name='_ZN5Quilt11downloadAllEPfS0_R7Backend' filepath='libnurbs/internals/quilt.h' line='80' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'Backend&' -->
+          <parameter type-id='type-id-167'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Quilt::deleteMe(Pool&) -->
+        <function-decl name='deleteMe' mangled-name='_ZN5Quilt8deleteMeER4Pool' filepath='libnurbs/internals/quilt.h' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'Pool&' -->
+          <parameter type-id='type-id-124'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Quilt::toBezier(Knotvector&, Knotvector&, float*, long int) -->
+        <function-decl name='toBezier' mangled-name='_ZN5Quilt8toBezierER10KnotvectorS1_Pfl' filepath='libnurbs/internals/quilt.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'Knotvector&' -->
+          <parameter type-id='type-id-168'/>
+          <!-- parameter of type 'Knotvector&' -->
+          <parameter type-id='type-id-168'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Quilt::toBezier(Knotvector&, float*, long int) -->
+        <function-decl name='toBezier' mangled-name='_ZN5Quilt8toBezierER10KnotvectorPfl' filepath='libnurbs/internals/quilt.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148' is-artificial='yes'/>
+          <!-- parameter of type 'Knotvector&' -->
+          <parameter type-id='type-id-168'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- struct Renderhints -->
+    <class-decl name='Renderhints' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/renderhints.h' line='41' column='1' id='type-id-62'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- REAL Renderhints::display_method -->
+        <var-decl name='display_method' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/renderhints.h' line='49' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <!-- REAL Renderhints::errorchecking -->
+        <var-decl name='errorchecking' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/renderhints.h' line='50' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- REAL Renderhints::subdivisions -->
+        <var-decl name='subdivisions' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/renderhints.h' line='51' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <!-- REAL Renderhints::tmp1 -->
+        <var-decl name='tmp1' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/renderhints.h' line='52' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- int Renderhints::displaydomain -->
+        <var-decl name='displaydomain' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/renderhints.h' line='54' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <!-- int Renderhints::maxsubdivisions -->
+        <var-decl name='maxsubdivisions' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/renderhints.h' line='55' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- int Renderhints::wiretris -->
+        <var-decl name='wiretris' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/renderhints.h' line='56' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='224'>
+        <!-- int Renderhints::wirequads -->
+        <var-decl name='wirequads' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/renderhints.h' line='57' column='1'/>
+      </data-member>
+      <member-function access='public' constructor='yes'>
+        <!-- Renderhints::Renderhints() -->
+        <function-decl name='Renderhints' filepath='libnurbs/internals/renderhints.h' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Renderhints*' -->
+          <parameter type-id='type-id-169' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Renderhints::init() -->
+        <function-decl name='init' mangled-name='_ZN11Renderhints4initEv' filepath='libnurbs/internals/renderhints.h' line='44' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Renderhints*' -->
+          <parameter type-id='type-id-169' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Renderhints::isProperty(long int) -->
+        <function-decl name='isProperty' mangled-name='_ZN11Renderhints10isPropertyEl' filepath='libnurbs/internals/renderhints.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Renderhints*' -->
+          <parameter type-id='type-id-169' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Renderhints::setProperty(long int, REAL) -->
+        <function-decl name='setProperty' mangled-name='_ZN11Renderhints11setPropertyElf' filepath='libnurbs/internals/renderhints.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Renderhints*' -->
+          <parameter type-id='type-id-169' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- REAL Renderhints::getProperty(long int) -->
+        <function-decl name='getProperty' mangled-name='_ZN11Renderhints11getPropertyEl' filepath='libnurbs/internals/renderhints.h' line='46' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Renderhints*' -->
+          <parameter type-id='type-id-169' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- typedef REAL -->
+          <return type-id='type-id-1'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- class Subdivider -->
-    <class-decl name='Subdivider' size-in-bits='20416' visibility='default' filepath='libnurbs/internals/subdivider.h' line='55' column='1' id='type-id-74'>
+    <class-decl name='Subdivider' size-in-bits='20416' visibility='default' filepath='libnurbs/internals/subdivider.h' line='55' column='1' id='type-id-65'>
       <member-type access='private'>
         <!-- enum Subdivider::dir -->
-        <enum-decl name='dir' filepath='libnurbs/internals/subdivider.h' line='105' column='1' id='type-id-119'>
-          <underlying-type type-id='type-id-9'/>
+        <enum-decl name='dir' filepath='libnurbs/internals/subdivider.h' line='105' column='1' id='type-id-170'>
+          <underlying-type type-id='type-id-12'/>
           <enumerator name='down' value='0'/>
           <enumerator name='same' value='1'/>
           <enumerator name='up' value='2'/>
@@ -6342,87 +6491,87 @@
       </member-type>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- Slicer Subdivider::slicer -->
-        <var-decl name='slicer' type-id='type-id-120' visibility='default' filepath='libnurbs/internals/subdivider.h' line='112' column='1'/>
+        <var-decl name='slicer' type-id='type-id-171' visibility='default' filepath='libnurbs/internals/subdivider.h' line='112' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='8064'>
         <!-- ArcTessellator Subdivider::arctessellator -->
-        <var-decl name='arctessellator' type-id='type-id-121' visibility='default' filepath='libnurbs/internals/subdivider.h' line='113' column='1'/>
+        <var-decl name='arctessellator' type-id='type-id-135' visibility='default' filepath='libnurbs/internals/subdivider.h' line='113' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='8192'>
         <!-- Pool Subdivider::arcpool -->
-        <var-decl name='arcpool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/subdivider.h' line='114' column='1'/>
+        <var-decl name='arcpool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/subdivider.h' line='114' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='10688'>
         <!-- Pool Subdivider::bezierarcpool -->
-        <var-decl name='bezierarcpool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/subdivider.h' line='115' column='1'/>
+        <var-decl name='bezierarcpool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/subdivider.h' line='115' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='13184'>
         <!-- Pool Subdivider::pwlarcpool -->
-        <var-decl name='pwlarcpool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/subdivider.h' line='116' column='1'/>
+        <var-decl name='pwlarcpool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/subdivider.h' line='116' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='15680'>
         <!-- TrimVertexPool Subdivider::trimvertexpool -->
-        <var-decl name='trimvertexpool' type-id='type-id-77' visibility='default' filepath='libnurbs/internals/subdivider.h' line='117' column='1'/>
+        <var-decl name='trimvertexpool' type-id='type-id-68' visibility='default' filepath='libnurbs/internals/subdivider.h' line='117' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='18304'>
         <!-- JumpBuffer* Subdivider::jumpbuffer -->
-        <var-decl name='jumpbuffer' type-id='type-id-75' visibility='default' filepath='libnurbs/internals/subdivider.h' line='119' column='1'/>
+        <var-decl name='jumpbuffer' type-id='type-id-66' visibility='default' filepath='libnurbs/internals/subdivider.h' line='119' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='18368'>
         <!-- Renderhints& Subdivider::renderhints -->
-        <var-decl name='renderhints' type-id='type-id-122' visibility='default' filepath='libnurbs/internals/subdivider.h' line='120' column='1'/>
+        <var-decl name='renderhints' type-id='type-id-172' visibility='default' filepath='libnurbs/internals/subdivider.h' line='120' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='18432'>
         <!-- Backend& Subdivider::backend -->
-        <var-decl name='backend' type-id='type-id-109' visibility='default' filepath='libnurbs/internals/subdivider.h' line='121' column='1'/>
+        <var-decl name='backend' type-id='type-id-167' visibility='default' filepath='libnurbs/internals/subdivider.h' line='121' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='18496'>
         <!-- Bin Subdivider::initialbin -->
-        <var-decl name='initialbin' type-id='type-id-123' visibility='default' filepath='libnurbs/internals/subdivider.h' line='123' column='1'/>
+        <var-decl name='initialbin' type-id='type-id-142' visibility='default' filepath='libnurbs/internals/subdivider.h' line='123' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='18624'>
         <!-- Arc_ptr Subdivider::pjarc -->
-        <var-decl name='pjarc' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/subdivider.h' line='124' column='1'/>
+        <var-decl name='pjarc' type-id='type-id-112' visibility='default' filepath='libnurbs/internals/subdivider.h' line='124' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='18688'>
         <!-- int Subdivider::s_index -->
-        <var-decl name='s_index' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/subdivider.h' line='125' column='1'/>
+        <var-decl name='s_index' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/subdivider.h' line='125' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='18720'>
         <!-- int Subdivider::t_index -->
-        <var-decl name='t_index' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/subdivider.h' line='126' column='1'/>
+        <var-decl name='t_index' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/subdivider.h' line='126' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='18752'>
         <!-- Quilt* Subdivider::qlist -->
-        <var-decl name='qlist' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/subdivider.h' line='127' column='1'/>
+        <var-decl name='qlist' type-id='type-id-148' visibility='default' filepath='libnurbs/internals/subdivider.h' line='127' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='18816'>
         <!-- Flist Subdivider::spbrkpts -->
-        <var-decl name='spbrkpts' type-id='type-id-126' visibility='default' filepath='libnurbs/internals/subdivider.h' line='128' column='1'/>
+        <var-decl name='spbrkpts' type-id='type-id-150' visibility='default' filepath='libnurbs/internals/subdivider.h' line='128' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='19136'>
         <!-- Flist Subdivider::tpbrkpts -->
-        <var-decl name='tpbrkpts' type-id='type-id-126' visibility='default' filepath='libnurbs/internals/subdivider.h' line='129' column='1'/>
+        <var-decl name='tpbrkpts' type-id='type-id-150' visibility='default' filepath='libnurbs/internals/subdivider.h' line='129' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='19456'>
         <!-- Flist Subdivider::smbrkpts -->
-        <var-decl name='smbrkpts' type-id='type-id-126' visibility='default' filepath='libnurbs/internals/subdivider.h' line='130' column='1'/>
+        <var-decl name='smbrkpts' type-id='type-id-150' visibility='default' filepath='libnurbs/internals/subdivider.h' line='130' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='19776'>
         <!-- Flist Subdivider::tmbrkpts -->
-        <var-decl name='tmbrkpts' type-id='type-id-126' visibility='default' filepath='libnurbs/internals/subdivider.h' line='131' column='1'/>
+        <var-decl name='tmbrkpts' type-id='type-id-150' visibility='default' filepath='libnurbs/internals/subdivider.h' line='131' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='20096'>
         <!-- REAL Subdivider::stepsizes[4] -->
-        <var-decl name='stepsizes' type-id='type-id-127' visibility='default' filepath='libnurbs/internals/subdivider.h' line='132' column='1'/>
+        <var-decl name='stepsizes' type-id='type-id-131' visibility='default' filepath='libnurbs/internals/subdivider.h' line='132' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='20224'>
         <!-- int Subdivider::showDegenerate -->
-        <var-decl name='showDegenerate' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/subdivider.h' line='133' column='1'/>
+        <var-decl name='showDegenerate' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/subdivider.h' line='133' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='20256'>
         <!-- int Subdivider::isArcTypeBezier -->
-        <var-decl name='isArcTypeBezier' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/subdivider.h' line='134' column='1'/>
+        <var-decl name='isArcTypeBezier' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/subdivider.h' line='134' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='20288'>
         <!-- REAL Subdivider::domain_distance_u_rate -->
@@ -6434,203 +6583,1166 @@
       </data-member>
       <data-member access='private' layout-offset-in-bits='20352'>
         <!-- int Subdivider::is_domain_distance_sampling -->
-        <var-decl name='is_domain_distance_sampling' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/subdivider.h' line='190' column='1'/>
+        <var-decl name='is_domain_distance_sampling' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/subdivider.h' line='190' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- Subdivider::Subdivider(Renderhints&, Backend&) -->
         <function-decl name='Subdivider' filepath='libnurbs/internals/subdivider.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-128' is-artificial='yes'/>
+          <parameter type-id='type-id-173' is-artificial='yes'/>
           <!-- parameter of type 'Renderhints&' -->
-          <parameter type-id='type-id-129'/>
+          <parameter type-id='type-id-172'/>
           <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-111'/>
+          <parameter type-id='type-id-167'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- Subdivider::~Subdivider(int) -->
         <function-decl name='~Subdivider' filepath='libnurbs/internals/subdivider.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Subdivider*' -->
-          <parameter type-id='type-id-128' is-artificial='yes'/>
+          <parameter type-id='type-id-173' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' static='yes'>
+        <!-- int Subdivider::bbox(REAL, REAL, REAL, REAL, REAL) -->
+        <function-decl name='bbox' mangled-name='_ZN10Subdivider4bboxEffffff' filepath='libnurbs/internals/subdivider.h' line='168' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' static='yes'>
+        <!-- int Subdivider::ccw(TrimVertex*, TrimVertex*) -->
+        <function-decl name='ccw' mangled-name='_ZN10Subdivider3ccwEP10TrimVertexS1_S1_' filepath='libnurbs/internals/subdivider.h' line='169' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Subdivider::bbox(TrimVertex*, TrimVertex*, TrimVertex*, int) -->
+        <function-decl name='bbox' mangled-name='_ZN10Subdivider4bboxEP10TrimVertexS1_S1_i' filepath='libnurbs/internals/subdivider.h' line='167' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Subdivider::ccwTurn_tl(Arc_ptr, Arc_ptr) -->
+        <function-decl name='ccwTurn_tl' mangled-name='_ZN10Subdivider10ccwTurn_tlEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Subdivider::ccwTurn_sr(Arc_ptr, Arc_ptr) -->
+        <function-decl name='ccwTurn_sr' mangled-name='_ZN10Subdivider10ccwTurn_srEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Subdivider::ccwTurn_sl(Arc_ptr, Arc_ptr) -->
+        <function-decl name='ccwTurn_sl' mangled-name='_ZN10Subdivider10ccwTurn_slEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Subdivider::ccwTurn_tr(Arc_ptr, Arc_ptr) -->
+        <function-decl name='ccwTurn_tr' mangled-name='_ZN10Subdivider10ccwTurn_trEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::samplingSplit(Curvelist&, int) -->
+        <function-decl name='samplingSplit' mangled-name='_ZN10Subdivider13samplingSplitER9Curvelisti' filepath='libnurbs/internals/subdivider.h' line='136' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Curvelist&' -->
+          <parameter type-id='type-id-149'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::drawCurves() -->
+        <function-decl name='drawCurves' mangled-name='_ZN10Subdivider10drawCurvesEv' filepath='libnurbs/internals/subdivider.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Subdivider::showingDegenerate() -->
+        <function-decl name='showingDegenerate' mangled-name='_ZN10Subdivider17showingDegenerateEv' filepath='libnurbs/internals/subdivider.h' line='155' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::classify_headonright_t(Bin&, Bin&, Bin&, REAL) -->
+        <function-decl name='classify_headonright_t' mangled-name='_ZN10Subdivider22classify_headonright_tER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='102' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::classify_tailonright_t(Bin&, Bin&, Bin&, REAL) -->
+        <function-decl name='classify_tailonright_t' mangled-name='_ZN10Subdivider22classify_tailonright_tER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::classify_headonright_s(Bin&, Bin&, Bin&, REAL) -->
+        <function-decl name='classify_headonright_s' mangled-name='_ZN10Subdivider22classify_headonright_sER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::classify_tailonright_s(Bin&, Bin&, Bin&, REAL) -->
+        <function-decl name='classify_tailonright_s' mangled-name='_ZN10Subdivider22classify_tailonright_sER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='99' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::classify_headonleft_t(Bin&, Bin&, Bin&, REAL) -->
+        <function-decl name='classify_headonleft_t' mangled-name='_ZN10Subdivider21classify_headonleft_tER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='100' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::classify_tailonleft_t(Bin&, Bin&, Bin&, REAL) -->
+        <function-decl name='classify_tailonleft_t' mangled-name='_ZN10Subdivider21classify_tailonleft_tER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='101' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::classify_headonleft_s(Bin&, Bin&, Bin&, REAL) -->
+        <function-decl name='classify_headonleft_s' mangled-name='_ZN10Subdivider21classify_headonleft_sER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='96' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::classify_tailonleft_s(Bin&, Bin&, Bin&, REAL) -->
+        <function-decl name='classify_tailonleft_s' mangled-name='_ZN10Subdivider21classify_tailonleft_sER3BinS1_S1_f' filepath='libnurbs/internals/subdivider.h' line='97' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Subdivider::arc_split(Arc_ptr, int, REAL, int) -->
+        <function-decl name='arc_split' mangled-name='_ZN10Subdivider9arc_splitEP3Arcifi' filepath='libnurbs/internals/subdivider.h' line='172' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::partition(Bin&, Bin&, Bin&, Bin&, Bin&, int, REAL) -->
+        <function-decl name='partition' mangled-name='_ZN10Subdivider9partitionER3BinS1_S1_S1_S1_if' filepath='libnurbs/internals/subdivider.h' line='162' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Subdivider::isMonotone(Arc_ptr) -->
+        <function-decl name='isMonotone' mangled-name='_ZN10Subdivider10isMonotoneEP3Arc' filepath='libnurbs/internals/subdivider.h' line='108' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::monotonize(Arc_ptr, Bin&) -->
+        <function-decl name='monotonize' mangled-name='_ZN10Subdivider10monotonizeEP3ArcR3Bin' filepath='libnurbs/internals/subdivider.h' line='107' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::tessellate(Arc_ptr, REAL) -->
+        <function-decl name='tessellate' mangled-name='_ZN10Subdivider10tessellateEP3Arcf' filepath='libnurbs/internals/subdivider.h' line='106' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Subdivider::decompose(Bin&, REAL) -->
+        <function-decl name='decompose' mangled-name='_ZN10Subdivider9decomposeER3Binf' filepath='libnurbs/internals/subdivider.h' line='109' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::set_domain_distance_u_rate(REAL) -->
+        <function-decl name='set_domain_distance_u_rate' mangled-name='_ZN10Subdivider26set_domain_distance_u_rateEf' filepath='libnurbs/internals/subdivider.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::set_domain_distance_v_rate(REAL) -->
+        <function-decl name='set_domain_distance_v_rate' mangled-name='_ZN10Subdivider26set_domain_distance_v_rateEf' filepath='libnurbs/internals/subdivider.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::set_is_domain_distance_sampling(int) -->
+        <function-decl name='set_is_domain_distance_sampling' mangled-name='_ZN10Subdivider31set_is_domain_distance_samplingEi' filepath='libnurbs/internals/subdivider.h' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::beginTrims() -->
+        <function-decl name='beginTrims' mangled-name='_ZN10Subdivider10beginTrimsEv' filepath='libnurbs/internals/subdivider.h' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::beginLoop() -->
+        <function-decl name='beginLoop' mangled-name='_ZN10Subdivider9beginLoopEv' filepath='libnurbs/internals/subdivider.h' line='62' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::endLoop() -->
+        <function-decl name='endLoop' mangled-name='_ZN10Subdivider7endLoopEv' filepath='libnurbs/internals/subdivider.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::endTrims() -->
+        <function-decl name='endTrims' mangled-name='_ZN10Subdivider8endTrimsEv' filepath='libnurbs/internals/subdivider.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::endQuilts() -->
+        <function-decl name='endQuilts' mangled-name='_ZN10Subdivider9endQuiltsEv' filepath='libnurbs/internals/subdivider.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::simple_link(Arc_ptr, Arc_ptr) -->
+        <function-decl name='simple_link' mangled-name='_ZN10Subdivider11simple_linkEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='176' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Subdivider::isBezierArcType() -->
+        <function-decl name='isBezierArcType' mangled-name='_ZN10Subdivider15isBezierArcTypeEv' filepath='libnurbs/internals/subdivider.h' line='158' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::link(Arc_ptr, Arc_ptr, Arc_ptr, Arc_ptr) -->
+        <function-decl name='link' mangled-name='_ZN10Subdivider4linkEP3ArcS1_S1_S1_' filepath='libnurbs/internals/subdivider.h' line='175' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::check_t(Arc_ptr, Arc_ptr) -->
+        <function-decl name='check_t' mangled-name='_ZN10Subdivider7check_tEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='174' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::check_s(Arc_ptr, Arc_ptr) -->
+        <function-decl name='check_s' mangled-name='_ZN10Subdivider7check_sEP3ArcS1_' filepath='libnurbs/internals/subdivider.h' line='173' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::join_t(Bin&, Bin&, Arc_ptr, Arc_ptr) -->
+        <function-decl name='join_t' mangled-name='_ZN10Subdivider6join_tER3BinS1_P3ArcS3_' filepath='libnurbs/internals/subdivider.h' line='171' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::join_s(Bin&, Bin&, Arc_ptr, Arc_ptr) -->
+        <function-decl name='join_s' mangled-name='_ZN10Subdivider6join_sER3BinS1_P3ArcS3_' filepath='libnurbs/internals/subdivider.h' line='170' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::split(Bin&, Bin&, Bin&, int, REAL) -->
+        <function-decl name='split' mangled-name='_ZN10Subdivider5splitER3BinS1_S1_if' filepath='libnurbs/internals/subdivider.h' line='150' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::setArcTypePwl() -->
+        <function-decl name='setArcTypePwl' mangled-name='_ZN10Subdivider13setArcTypePwlEv' filepath='libnurbs/internals/subdivider.h' line='157' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::setDegenerate() -->
+        <function-decl name='setDegenerate' mangled-name='_ZN10Subdivider13setDegenerateEv' filepath='libnurbs/internals/subdivider.h' line='153' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::setArcTypeBezier() -->
+        <function-decl name='setArcTypeBezier' mangled-name='_ZN10Subdivider16setArcTypeBezierEv' filepath='libnurbs/internals/subdivider.h' line='156' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::setNonDegenerate() -->
+        <function-decl name='setNonDegenerate' mangled-name='_ZN10Subdivider16setNonDegenerateEv' filepath='libnurbs/internals/subdivider.h' line='154' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::setJumpbuffer(JumpBuffer*) -->
+        <function-decl name='setJumpbuffer' mangled-name='_ZN10Subdivider13setJumpbufferEP10JumpBuffer' filepath='libnurbs/internals/subdivider.h' line='80' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'JumpBuffer*' -->
+          <parameter type-id='type-id-66'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::beginQuilts() -->
+        <function-decl name='beginQuilts' mangled-name='_ZN10Subdivider11beginQuiltsEv' filepath='libnurbs/internals/subdivider.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::addQuilt(Quilt*) -->
+        <function-decl name='addQuilt' mangled-name='_ZN10Subdivider8addQuiltEP5Quilt' filepath='libnurbs/internals/subdivider.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::tessellate(Bin&, REAL, REAL, REAL, REAL) -->
+        <function-decl name='tessellate' mangled-name='_ZN10Subdivider10tessellateER3Binffff' filepath='libnurbs/internals/subdivider.h' line='151' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::freejarcs(Bin&) -->
+        <function-decl name='freejarcs' mangled-name='_ZN10Subdivider9freejarcsER3Bin' filepath='libnurbs/internals/subdivider.h' line='148' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::outline(Bin&) -->
+        <function-decl name='outline' mangled-name='_ZN10Subdivider7outlineER3Bin' filepath='libnurbs/internals/subdivider.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::render(Bin&) -->
+        <function-decl name='render' mangled-name='_ZN10Subdivider6renderER3Bin' filepath='libnurbs/internals/subdivider.h' line='149' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::findIrregularT(Bin&) -->
+        <function-decl name='findIrregularT' mangled-name='_ZN10Subdivider14findIrregularTER3Bin' filepath='libnurbs/internals/subdivider.h' line='164' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::findIrregularS(Bin&) -->
+        <function-decl name='findIrregularS' mangled-name='_ZN10Subdivider14findIrregularSER3Bin' filepath='libnurbs/internals/subdivider.h' line='163' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::monosplitInT(Bin&, int, int) -->
+        <function-decl name='monosplitInT' mangled-name='_ZN10Subdivider12monosplitInTER3Binii' filepath='libnurbs/internals/subdivider.h' line='145' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::monosplitInS(Bin&, int, int) -->
+        <function-decl name='monosplitInS' mangled-name='_ZN10Subdivider12monosplitInSER3Binii' filepath='libnurbs/internals/subdivider.h' line='144' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::tessellation(Bin&, Patchlist&) -->
+        <function-decl name='tessellation' mangled-name='_ZN10Subdivider12tessellationER3BinR9Patchlist' filepath='libnurbs/internals/subdivider.h' line='143' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Patchlist&' -->
+          <parameter type-id='type-id-161'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::nonSamplingSplit(Bin&, Patchlist&, int, int) -->
+        <function-decl name='nonSamplingSplit' mangled-name='_ZN10Subdivider16nonSamplingSplitER3BinR9Patchlistii' filepath='libnurbs/internals/subdivider.h' line='142' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Patchlist&' -->
+          <parameter type-id='type-id-161'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::samplingSplit(Bin&, Patchlist&, int, int) -->
+        <function-decl name='samplingSplit' mangled-name='_ZN10Subdivider13samplingSplitER3BinR9Patchlistii' filepath='libnurbs/internals/subdivider.h' line='141' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'Patchlist&' -->
+          <parameter type-id='type-id-161'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::splitInT(Bin&, int, int) -->
+        <function-decl name='splitInT' mangled-name='_ZN10Subdivider8splitInTER3Binii' filepath='libnurbs/internals/subdivider.h' line='140' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::splitInS(Bin&, int, int) -->
+        <function-decl name='splitInS' mangled-name='_ZN10Subdivider8splitInSER3Binii' filepath='libnurbs/internals/subdivider.h' line='139' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::subdivideInS(Bin&) -->
+        <function-decl name='subdivideInS' mangled-name='_ZN10Subdivider12subdivideInSER3Bin' filepath='libnurbs/internals/subdivider.h' line='138' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'Bin&' -->
+          <parameter type-id='type-id-174'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::clear() -->
+        <function-decl name='clear' mangled-name='_ZN10Subdivider5clearEv' filepath='libnurbs/internals/subdivider.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::makeBorderTrim(const REAL*, const REAL*) -->
+        <function-decl name='makeBorderTrim' mangled-name='_ZN10Subdivider14makeBorderTrimEPKfS1_' filepath='libnurbs/internals/subdivider.h' line='160' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'const REAL*' -->
+          <parameter type-id='type-id-175'/>
+          <!-- parameter of type 'const REAL*' -->
+          <parameter type-id='type-id-175'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::drawSurfaces(long int) -->
+        <function-decl name='drawSurfaces' mangled-name='_ZN10Subdivider12drawSurfacesEl' filepath='libnurbs/internals/subdivider.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::addArc(int, TrimVertex*, long int) -->
+        <function-decl name='addArc' mangled-name='_ZN10Subdivider6addArcEiP10TrimVertexl' filepath='libnurbs/internals/subdivider.h' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Subdivider::addArc(REAL*, Quilt*, long int) -->
+        <function-decl name='addArc' mangled-name='_ZN10Subdivider6addArcEPfP5Quiltl' filepath='libnurbs/internals/subdivider.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'Quilt*' -->
+          <parameter type-id='type-id-148'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Bin* Subdivider::makePatchBoundary(const REAL*, const REAL*) -->
+        <function-decl name='makePatchBoundary' mangled-name='_ZN10Subdivider17makePatchBoundaryEPKfS1_' filepath='libnurbs/internals/subdivider.h' line='178' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Subdivider*' -->
+          <parameter type-id='type-id-173' is-artificial='yes'/>
+          <!-- parameter of type 'const REAL*' -->
+          <parameter type-id='type-id-175'/>
+          <!-- parameter of type 'const REAL*' -->
+          <parameter type-id='type-id-175'/>
+          <!-- Bin* -->
+          <return type-id='type-id-143'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- class Flist -->
-    <class-decl name='Flist' size-in-bits='320' visibility='default' filepath='libnurbs/internals/flist.h' line='42' column='1' id='type-id-126'>
+    <!-- struct TrimVertexPool -->
+    <class-decl name='TrimVertexPool' size-in-bits='2624' is-struct='yes' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='45' column='1' id='type-id-68'>
       <data-member access='private' layout-offset-in-bits='0'>
-        <!-- REAL* Flist::pts -->
-        <var-decl name='pts' type-id='type-id-16' visibility='default' filepath='libnurbs/internals/flist.h' line='44' column='1'/>
+        <!-- Pool TrimVertexPool::pool -->
+        <var-decl name='pool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='52' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- int Flist::npts -->
-        <var-decl name='npts' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/flist.h' line='45' column='1'/>
+      <data-member access='private' layout-offset-in-bits='2496'>
+        <!-- TrimVertex** TrimVertexPool::vlist -->
+        <var-decl name='vlist' type-id='type-id-176' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='53' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='96'>
-        <!-- int Flist::start -->
-        <var-decl name='start' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/flist.h' line='46' column='1'/>
+      <data-member access='private' layout-offset-in-bits='2560'>
+        <!-- int TrimVertexPool::nextvlistslot -->
+        <var-decl name='nextvlistslot' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='54' column='1'/>
       </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- int Flist::end -->
-        <var-decl name='end' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/flist.h' line='47' column='1'/>
+      <data-member access='private' layout-offset-in-bits='2592'>
+        <!-- int TrimVertexPool::vlistsize -->
+        <var-decl name='vlistsize' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/trimvertpool.h' line='55' column='1'/>
       </data-member>
-      <data-member access='protected' layout-offset-in-bits='192'>
-        <!-- FlistSorter Flist::sorter -->
-        <var-decl name='sorter' type-id='type-id-154' visibility='default' filepath='libnurbs/internals/flist.h' line='56' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Flist::Flist() -->
-        <function-decl name='Flist' filepath='libnurbs/internals/flist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-155' is-artificial='yes'/>
+      <member-function access='public' constructor='yes'>
+        <!-- TrimVertexPool::TrimVertexPool() -->
+        <function-decl name='TrimVertexPool' filepath='libnurbs/internals/trimvertpool.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimVertexPool*' -->
+          <parameter type-id='type-id-177' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- Flist::~Flist(int) -->
-        <function-decl name='~Flist' filepath='libnurbs/internals/flist.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Flist*' -->
-          <parameter type-id='type-id-155' is-artificial='yes'/>
+      <member-function access='public' destructor='yes'>
+        <!-- TrimVertexPool::~TrimVertexPool(int) -->
+        <function-decl name='~TrimVertexPool' filepath='libnurbs/internals/trimvertpool.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimVertexPool*' -->
+          <parameter type-id='type-id-177' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- TrimVertex* TrimVertexPool::get(int) -->
+        <function-decl name='get' mangled-name='_ZN14TrimVertexPool3getEi' filepath='libnurbs/internals/trimvertpool.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimVertexPool*' -->
+          <parameter type-id='type-id-177' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- TrimVertex* -->
+          <return type-id='type-id-127'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void TrimVertexPool::clear() -->
+        <function-decl name='clear' mangled-name='_ZN14TrimVertexPool5clearEv' filepath='libnurbs/internals/trimvertpool.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimVertexPool*' -->
+          <parameter type-id='type-id-177' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- Arc** -->
+    <pointer-type-def type-id='type-id-111' size-in-bits='64' id='type-id-178'/>
+    <!-- ArcSdirSorter* -->
+    <pointer-type-def type-id='type-id-179' size-in-bits='64' id='type-id-180'/>
+    <!-- ArcSorter* -->
+    <pointer-type-def type-id='type-id-181' size-in-bits='64' id='type-id-182'/>
+    <!-- ArcTdirSorter* -->
+    <pointer-type-def type-id='type-id-183' size-in-bits='64' id='type-id-184'/>
+    <!-- ArcTessellator* -->
+    <pointer-type-def type-id='type-id-135' size-in-bits='64' id='type-id-137'/>
+    <!-- Backend& -->
+    <reference-type-def kind='lvalue' type-id='type-id-64' size-in-bits='64' id='type-id-167'/>
+    <!-- Bin& -->
+    <reference-type-def kind='lvalue' type-id='type-id-142' size-in-bits='64' id='type-id-174'/>
+    <!-- Bin* -->
+    <pointer-type-def type-id='type-id-142' size-in-bits='64' id='type-id-143'/>
+    <!-- Curvelist& -->
+    <reference-type-def kind='lvalue' type-id='type-id-144' size-in-bits='64' id='type-id-149'/>
+    <!-- Flist* -->
+    <pointer-type-def type-id='type-id-150' size-in-bits='64' id='type-id-152'/>
+    <!-- JumpBuffer* -->
+    <pointer-type-def type-id='type-id-155' size-in-bits='64' id='type-id-66'/>
+    <!-- Patchlist& -->
+    <reference-type-def kind='lvalue' type-id='type-id-157' size-in-bits='64' id='type-id-161'/>
+    <!-- Quilt* -->
+    <pointer-type-def type-id='type-id-162' size-in-bits='64' id='type-id-148'/>
+    <!-- Renderhints& -->
+    <reference-type-def kind='lvalue' type-id='type-id-62' size-in-bits='64' id='type-id-172'/>
+    <!-- Sorter* -->
+    <pointer-type-def type-id='type-id-153' size-in-bits='64' id='type-id-185'/>
+    <!-- Subdivider& -->
+    <reference-type-def kind='lvalue' type-id='type-id-65' size-in-bits='64' id='type-id-186'/>
+    <!-- Subdivider* -->
+    <pointer-type-def type-id='type-id-65' size-in-bits='64' id='type-id-173'/>
+    <!-- TrimVertex** -->
+    <pointer-type-def type-id='type-id-127' size-in-bits='64' id='type-id-176'/>
+    <!-- TrimVertexPool& -->
+    <reference-type-def kind='lvalue' type-id='type-id-68' size-in-bits='64' id='type-id-136'/>
+    <!-- TrimVertexPool* -->
+    <pointer-type-def type-id='type-id-68' size-in-bits='64' id='type-id-177'/>
+    <!-- const REAL -->
+    <qualified-type-def type-id='type-id-1' const='yes' id='type-id-187'/>
+    <!-- const REAL* -->
+    <pointer-type-def type-id='type-id-187' size-in-bits='64' id='type-id-175'/>
+    <!-- class ArcSorter -->
+    <class-decl name='ArcSorter' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='44' column='1' is-declaration-only='yes' id='type-id-181'>
+      <!-- class Sorter -->
+      <base-class access='private' layout-offset-in-bits='0' type-id='type-id-153'/>
+      <data-member access='protected' layout-offset-in-bits='128'>
+        <!-- Subdivider& ArcSorter::subdivider -->
+        <var-decl name='subdivider' type-id='type-id-186' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='50' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- ArcSorter::ArcSorter(Subdivider&) -->
+        <function-decl name='ArcSorter' filepath='libnurbs/internals/arcsorter.cc' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcSorter*' -->
+          <parameter type-id='type-id-182' is-artificial='yes'/>
+          <!-- parameter of type 'Subdivider&' -->
+          <parameter type-id='type-id-186'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void ArcSorter::qsort(Arc**, int) -->
+        <function-decl name='qsort' mangled-name='_ZN9ArcSorter5qsortEPP3Arci' filepath='libnurbs/internals/arcsorter.cc' line='60' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcSorter*' -->
+          <parameter type-id='type-id-182' is-artificial='yes'/>
+          <!-- parameter of type 'Arc**' -->
+          <parameter type-id='type-id-178'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='protected' vtable-offset='2'>
+        <!-- int ArcSorter::qscmp(char*, char*) -->
+        <function-decl name='qscmp' mangled-name='_ZN9ArcSorter5qscmpEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcSorter*' -->
+          <parameter type-id='type-id-182' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='3'>
+        <!-- void ArcSorter::qsexc(char*, char*) -->
+        <function-decl name='qsexc' mangled-name='_ZN9ArcSorter5qsexcEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcSorter*' -->
+          <parameter type-id='type-id-182' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' vtable-offset='4'>
+        <!-- void ArcSorter::qstexc(char*, char*, char*) -->
+        <function-decl name='qstexc' mangled-name='_ZN9ArcSorter6qstexcEPcS0_S0_' filepath='libnurbs/internals/arcsorter.cc' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'ArcSorter*' -->
+          <parameter type-id='type-id-182' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- class ArcSdirSorter -->
-    <class-decl name='ArcSdirSorter' size-in-bits='192' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='57' column='1' id='type-id-251'>
+    <class-decl name='ArcSdirSorter' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='57' column='1' is-declaration-only='yes' id='type-id-179'>
       <!-- class ArcSorter -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-242'/>
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-181'/>
       <member-function access='private' constructor='yes'>
         <!-- ArcSdirSorter::ArcSdirSorter(Subdivider&) -->
         <function-decl name='ArcSdirSorter' filepath='libnurbs/internals/arcsorter.cc' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'ArcSdirSorter*' -->
-          <parameter type-id='type-id-252' is-artificial='yes'/>
+          <parameter type-id='type-id-180' is-artificial='yes'/>
           <!-- parameter of type 'Subdivider&' -->
-          <parameter type-id='type-id-245'/>
+          <parameter type-id='type-id-186'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='2'>
         <!-- int ArcSdirSorter::qscmp(char*, char*) -->
         <function-decl name='qscmp' mangled-name='_ZN13ArcSdirSorter5qscmpEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='93' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'ArcSdirSorter*' -->
-          <parameter type-id='type-id-252' is-artificial='yes'/>
+          <parameter type-id='type-id-180' is-artificial='yes'/>
           <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
+          <parameter type-id='type-id-107'/>
           <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
+          <parameter type-id='type-id-107'/>
           <!-- int -->
-          <return type-id='type-id-11'/>
+          <return type-id='type-id-8'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- class ArcTdirSorter -->
-    <class-decl name='ArcTdirSorter' size-in-bits='192' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='65' column='1' id='type-id-253'>
+    <class-decl name='ArcTdirSorter' visibility='default' filepath='libnurbs/internals/arcsorter.h' line='65' column='1' is-declaration-only='yes' id='type-id-183'>
       <!-- class ArcSorter -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-242'/>
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-181'/>
       <member-function access='private' constructor='yes'>
         <!-- ArcTdirSorter::ArcTdirSorter(Subdivider&) -->
         <function-decl name='ArcTdirSorter' filepath='libnurbs/internals/arcsorter.cc' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'ArcTdirSorter*' -->
-          <parameter type-id='type-id-254' is-artificial='yes'/>
+          <parameter type-id='type-id-184' is-artificial='yes'/>
           <!-- parameter of type 'Subdivider&' -->
-          <parameter type-id='type-id-245'/>
+          <parameter type-id='type-id-186'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' vtable-offset='2'>
         <!-- int ArcTdirSorter::qscmp(char*, char*) -->
         <function-decl name='qscmp' mangled-name='_ZN13ArcTdirSorter5qscmpEPcS0_' filepath='libnurbs/internals/arcsorter.cc' line='138' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'ArcTdirSorter*' -->
-          <parameter type-id='type-id-254' is-artificial='yes'/>
+          <parameter type-id='type-id-184' is-artificial='yes'/>
           <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
+          <parameter type-id='type-id-107'/>
           <!-- parameter of type 'char*' -->
-          <parameter type-id='type-id-115'/>
+          <parameter type-id='type-id-107'/>
           <!-- int -->
-          <return type-id='type-id-11'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct Patchlist -->
-    <class-decl name='Patchlist' size-in-bits='640' is-struct='yes' visibility='default' filepath='libnurbs/internals/patchlist.h' line='45' column='1' id='type-id-255'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Patch* Patchlist::patch -->
-        <var-decl name='patch' type-id='type-id-256' visibility='default' filepath='libnurbs/internals/patchlist.h' line='63' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- int Patchlist::notInBbox -->
-        <var-decl name='notInBbox' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patchlist.h' line='64' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='96'>
-        <!-- int Patchlist::needsSampling -->
-        <var-decl name='needsSampling' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patchlist.h' line='65' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- Pspec Patchlist::pspec[2] -->
-        <var-decl name='pspec' type-id='type-id-257' visibility='default' filepath='libnurbs/internals/patchlist.h' line='66' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Patchlist::Patchlist(Quilt*, REAL*, REAL*) -->
-        <function-decl name='Patchlist' filepath='libnurbs/internals/patchlist.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Patchlist*' -->
-          <parameter type-id='type-id-258' is-artificial='yes'/>
-          <!-- parameter of type 'Quilt*' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Patchlist::Patchlist(Patchlist&, int, REAL) -->
-        <function-decl name='Patchlist' filepath='libnurbs/internals/patchlist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Patchlist*' -->
-          <parameter type-id='type-id-258' is-artificial='yes'/>
-          <!-- parameter of type 'Patchlist&' -->
-          <parameter type-id='type-id-259'/>
-          <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' destructor='yes'>
-        <!-- Patchlist::~Patchlist(int) -->
-        <function-decl name='~Patchlist' filepath='libnurbs/internals/patchlist.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Patchlist*' -->
-          <parameter type-id='type-id-258' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-8'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- class Slicer -->
-    <class-decl name='Slicer' size-in-bits='8064' visibility='default' filepath='libnurbs/internals/slicer.h' line='49' column='1' id='type-id-120'>
+    <class-decl name='Slicer' visibility='default' filepath='libnurbs/internals/slicer.h' line='49' column='1' is-declaration-only='yes' id='type-id-171'>
       <!-- class CoveAndTiler -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-160'/>
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-188'/>
       <!-- class Mesher -->
-      <base-class access='public' layout-offset-in-bits='128' type-id='type-id-161'/>
+      <base-class access='public' layout-offset-in-bits='128' type-id='type-id-189'/>
       <data-member access='private' layout-offset-in-bits='5248'>
         <!-- Backend& Slicer::backend -->
-        <var-decl name='backend' type-id='type-id-109' visibility='default' filepath='libnurbs/internals/slicer.h' line='72' column='1'/>
+        <var-decl name='backend' type-id='type-id-167' visibility='default' filepath='libnurbs/internals/slicer.h' line='72' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='5312'>
         <!-- REAL Slicer::oneOverDu -->
@@ -6646,543 +7758,978 @@
       </data-member>
       <data-member access='private' layout-offset-in-bits='5408'>
         <!-- int Slicer::isolines -->
-        <var-decl name='isolines' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/slicer.h' line='75' column='1'/>
+        <var-decl name='isolines' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/slicer.h' line='75' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='5440'>
         <!-- int Slicer::ulinear -->
-        <var-decl name='ulinear' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/slicer.h' line='81' column='1'/>
+        <var-decl name='ulinear' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/slicer.h' line='81' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='5472'>
         <!-- int Slicer::vlinear -->
-        <var-decl name='vlinear' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/slicer.h' line='82' column='1'/>
+        <var-decl name='vlinear' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/slicer.h' line='82' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- Slicer::Slicer(int, void**, Backend&) -->
         <function-decl name='Slicer' filepath='libnurbs/internals/slicer.cc' line='1181' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+          <parameter type-id='type-id-190' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <parameter type-id='type-id-191' is-artificial='yes'/>
           <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-111'/>
+          <parameter type-id='type-id-167'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- Slicer::~Slicer(int, void**) -->
         <function-decl name='~Slicer' filepath='libnurbs/internals/slicer.cc' line='1192' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Slicer*' -->
-          <parameter type-id='type-id-162' is-artificial='yes'/>
+          <parameter type-id='type-id-190' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <parameter type-id='type-id-191' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- struct JumpBuffer -->
-    <class-decl name='JumpBuffer' size-in-bits='1600' is-struct='yes' visibility='default' filepath='libnurbs/internals/mysetjmp.h' line='56' column='1' id='type-id-95'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- jmp_buf JumpBuffer::buf -->
-        <var-decl name='buf' type-id='type-id-156' visibility='default' filepath='libnurbs/internals/mysetjmp.h' line='57' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- Arc** -->
-    <pointer-type-def type-id='type-id-167' size-in-bits='64' id='type-id-260'/>
-    <!-- ArcSdirSorter* -->
-    <pointer-type-def type-id='type-id-251' size-in-bits='64' id='type-id-252'/>
-    <!-- ArcSorter* -->
-    <pointer-type-def type-id='type-id-242' size-in-bits='64' id='type-id-244'/>
-    <!-- ArcSorter* const -->
-    <qualified-type-def type-id='type-id-244' const='yes' id='type-id-261'/>
-    <!-- ArcTdirSorter* -->
-    <pointer-type-def type-id='type-id-253' size-in-bits='64' id='type-id-254'/>
-    <!-- ArcTessellator* -->
-    <pointer-type-def type-id='type-id-121' size-in-bits='64' id='type-id-148'/>
-    <!-- Backend& -->
-    <qualified-type-def type-id='type-id-111' id='type-id-109'/>
-    <!-- Backend& -->
-    <reference-type-def kind='lvalue' type-id='type-id-73' size-in-bits='64' id='type-id-111'/>
-    <!-- Bin& -->
-    <reference-type-def kind='lvalue' type-id='type-id-123' size-in-bits='64' id='type-id-262'/>
-    <!-- Bin* -->
-    <pointer-type-def type-id='type-id-123' size-in-bits='64' id='type-id-151'/>
-    <!-- Curvelist& -->
-    <reference-type-def kind='lvalue' type-id='type-id-246' size-in-bits='64' id='type-id-250'/>
-    <!-- Flist* -->
-    <pointer-type-def type-id='type-id-126' size-in-bits='64' id='type-id-155'/>
-    <!-- JumpBuffer* -->
-    <pointer-type-def type-id='type-id-95' size-in-bits='64' id='type-id-75'/>
-    <!-- Patchlist& -->
-    <reference-type-def kind='lvalue' type-id='type-id-255' size-in-bits='64' id='type-id-259'/>
-    <!-- Pool& -->
-    <qualified-type-def type-id='type-id-150' id='type-id-146'/>
-    <!-- Quilt* -->
-    <pointer-type-def type-id='type-id-140' size-in-bits='64' id='type-id-125'/>
-    <!-- Renderhints& -->
-    <qualified-type-def type-id='type-id-129' id='type-id-122'/>
-    <!-- Renderhints& -->
-    <reference-type-def kind='lvalue' type-id='type-id-71' size-in-bits='64' id='type-id-129'/>
-    <!-- Sorter* -->
-    <pointer-type-def type-id='type-id-176' size-in-bits='64' id='type-id-202'/>
-    <!-- Subdivider& -->
-    <qualified-type-def type-id='type-id-245' id='type-id-243'/>
-    <!-- Subdivider& -->
-    <reference-type-def kind='lvalue' type-id='type-id-74' size-in-bits='64' id='type-id-245'/>
-    <!-- Subdivider* -->
-    <pointer-type-def type-id='type-id-74' size-in-bits='64' id='type-id-128'/>
-    <!-- TrimVertex** -->
-    <pointer-type-def type-id='type-id-141' size-in-bits='64' id='type-id-130'/>
-    <!-- TrimVertexPool& -->
-    <qualified-type-def type-id='type-id-149' id='type-id-147'/>
-    <!-- TrimVertexPool& -->
-    <reference-type-def kind='lvalue' type-id='type-id-77' size-in-bits='64' id='type-id-149'/>
-    <!-- TrimVertexPool* -->
-    <pointer-type-def type-id='type-id-77' size-in-bits='64' id='type-id-131'/>
-    <!-- const REAL -->
-    <qualified-type-def type-id='type-id-1' const='yes' id='type-id-263'/>
-    <!-- const REAL* -->
-    <pointer-type-def type-id='type-id-263' size-in-bits='64' id='type-id-264'/>
-    <!-- Curve* -->
-    <pointer-type-def type-id='type-id-265' size-in-bits='64' id='type-id-247'/>
-    <!-- Curvelist* -->
-    <pointer-type-def type-id='type-id-246' size-in-bits='64' id='type-id-249'/>
-    <!-- Patch* -->
-    <pointer-type-def type-id='type-id-266' size-in-bits='64' id='type-id-256'/>
-    <!-- Patchlist* -->
-    <pointer-type-def type-id='type-id-255' size-in-bits='64' id='type-id-258'/>
-    <!-- Pspec[2] -->
-    <array-type-def dimensions='1' type-id='type-id-267' size-in-bits='512' id='type-id-257'>
-      <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
-    </array-type-def>
-    <!-- float[3] -->
-    <array-type-def dimensions='1' type-id='type-id-28' size-in-bits='96' id='type-id-248'>
-      <!-- <anonymous range>[3] -->
-      <subrange length='3' type-id='type-id-3' id='type-id-68'/>
-    </array-type-def>
-    <!-- class Curve -->
-    <class-decl name='Curve' size-in-bits='8128' visibility='default' filepath='libnurbs/internals/curve.h' line='46' column='1' id='type-id-265'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Curve* Curve::next -->
-        <var-decl name='next' type-id='type-id-247' visibility='default' filepath='libnurbs/internals/curve.h' line='51' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Mapdesc* Curve::mapdesc -->
-        <var-decl name='mapdesc' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/curve.h' line='53' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- int Curve::stride -->
-        <var-decl name='stride' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/curve.h' line='54' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='160'>
-        <!-- int Curve::order -->
-        <var-decl name='order' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/curve.h' line='55' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='192'>
-        <!-- int Curve::cullval -->
-        <var-decl name='cullval' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/curve.h' line='56' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='224'>
-        <!-- int Curve::needsSampling -->
-        <var-decl name='needsSampling' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/curve.h' line='57' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='256'>
-        <!-- REAL Curve::cpts[120] -->
-        <var-decl name='cpts' type-id='type-id-268' visibility='default' filepath='libnurbs/internals/curve.h' line='58' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='4096'>
-        <!-- REAL Curve::spts[120] -->
-        <var-decl name='spts' type-id='type-id-268' visibility='default' filepath='libnurbs/internals/curve.h' line='59' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='7936'>
-        <!-- REAL Curve::stepsize -->
-        <var-decl name='stepsize' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/curve.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='7968'>
-        <!-- REAL Curve::minstepsize -->
-        <var-decl name='minstepsize' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/curve.h' line='61' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='8000'>
-        <!-- REAL Curve::range[3] -->
-        <var-decl name='range' type-id='type-id-230' visibility='default' filepath='libnurbs/internals/curve.h' line='62' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Curve::Curve(Quilt*, REAL, REAL, Curve*) -->
-        <function-decl name='Curve' filepath='libnurbs/internals/curve.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Curve*' -->
-          <parameter type-id='type-id-247' is-artificial='yes'/>
-          <!-- parameter of type 'Quilt*' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'Curve*' -->
-          <parameter type-id='type-id-247'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Curve::Curve(Curve&, REAL, Curve*) -->
-        <function-decl name='Curve' filepath='libnurbs/internals/curve.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Curve*' -->
-          <parameter type-id='type-id-247' is-artificial='yes'/>
-          <!-- parameter of type 'Curve&' -->
-          <parameter type-id='type-id-269'/>
-          <!-- parameter of type 'typedef REAL' -->
-          <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'Curve*' -->
-          <parameter type-id='type-id-247'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- class Patch -->
-    <class-decl name='Patch' size-in-bits='277696' visibility='default' filepath='libnurbs/internals/patch.h' line='62' column='1' id='type-id-266'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Mapdesc* Patch::mapdesc -->
-        <var-decl name='mapdesc' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/patch.h' line='82' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Patch* Patch::next -->
-        <var-decl name='next' type-id='type-id-256' visibility='default' filepath='libnurbs/internals/patch.h' line='83' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- int Patch::cullval -->
-        <var-decl name='cullval' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patch.h' line='84' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='160'>
-        <!-- int Patch::notInBbox -->
-        <var-decl name='notInBbox' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patch.h' line='85' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='192'>
-        <!-- int Patch::needsSampling -->
-        <var-decl name='needsSampling' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patch.h' line='86' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='224'>
-        <!-- REAL Patch::cpts[2880] -->
-        <var-decl name='cpts' type-id='type-id-270' visibility='default' filepath='libnurbs/internals/patch.h' line='87' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='92384'>
-        <!-- REAL Patch::spts[2880] -->
-        <var-decl name='spts' type-id='type-id-270' visibility='default' filepath='libnurbs/internals/patch.h' line='88' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='184544'>
-        <!-- REAL Patch::bpts[2880] -->
-        <var-decl name='bpts' type-id='type-id-270' visibility='default' filepath='libnurbs/internals/patch.h' line='89' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='276704'>
-        <!-- Patchspec Patch::pspec[2] -->
-        <var-decl name='pspec' type-id='type-id-271' visibility='default' filepath='libnurbs/internals/patch.h' line='90' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='277344'>
-        <!-- REAL Patch::bb[2][5] -->
-        <var-decl name='bb' type-id='type-id-272' visibility='default' filepath='libnurbs/internals/patch.h' line='92' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- Patch::Patch(Quilt*, REAL*, REAL*, Patch*) -->
-        <function-decl name='Patch' filepath='libnurbs/internals/patch.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Patch*' -->
-          <parameter type-id='type-id-256' is-artificial='yes'/>
-          <!-- parameter of type 'Quilt*' -->
-          <parameter type-id='type-id-125'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
-          <!-- parameter of type 'Patch*' -->
-          <parameter type-id='type-id-256'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- Patch::Patch(Patch&, int, REAL, Patch*) -->
-        <function-decl name='Patch' filepath='libnurbs/internals/patch.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Patch*' -->
-          <parameter type-id='type-id-256' is-artificial='yes'/>
-          <!-- parameter of type 'Patch&' -->
-          <parameter type-id='type-id-273'/>
+      <member-function access='private'>
+        <!-- void Slicer::setisolines(int) -->
+        <function-decl name='setisolines' mangled-name='_ZN6Slicer11setisolinesEi' filepath='libnurbs/internals/slicer.cc' line='1197' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Slicer*' -->
+          <parameter type-id='type-id-190' is-artificial='yes'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Slicer::outline(Arc_ptr) -->
+        <function-decl name='outline' mangled-name='_ZN6Slicer7outlineEP3Arc' filepath='libnurbs/internals/slicer.cc' line='1292' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Slicer*' -->
+          <parameter type-id='type-id-190' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Slicer::outline() -->
+        <function-decl name='outline' mangled-name='_ZN6Slicer7outlineEv' filepath='libnurbs/internals/slicer.cc' line='1266' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Slicer*' -->
+          <parameter type-id='type-id-190' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Slicer::slice_old(Arc_ptr) -->
+        <function-decl name='slice_old' mangled-name='_ZN6Slicer9slice_oldEP3Arc' filepath='libnurbs/internals/slicer.cc' line='1212' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Slicer*' -->
+          <parameter type-id='type-id-190' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Slicer::setstriptessellation(REAL, REAL) -->
+        <function-decl name='setstriptessellation' mangled-name='_ZN6Slicer20setstriptessellationEff' filepath='libnurbs/internals/slicer.cc' line='1203' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Slicer*' -->
+          <parameter type-id='type-id-190' is-artificial='yes'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
-          <!-- parameter of type 'Patch*' -->
-          <parameter type-id='type-id-256'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Slicer::evalRBArray(rectBlockArray*, gridWrap*) -->
+        <function-decl name='evalRBArray' mangled-name='_ZN6Slicer11evalRBArrayEP14rectBlockArrayP8gridWrap' filepath='libnurbs/internals/slicer.cc' line='1001' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Slicer*' -->
+          <parameter type-id='type-id-190' is-artificial='yes'/>
+          <!-- parameter of type 'rectBlockArray*' -->
+          <parameter type-id='type-id-192'/>
+          <!-- parameter of type 'gridWrap*' -->
+          <parameter type-id='type-id-193'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Slicer::evalStream(primStream*) -->
+        <function-decl name='evalStream' mangled-name='_ZN6Slicer10evalStreamEP10primStream' filepath='libnurbs/internals/slicer.cc' line='1027' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Slicer*' -->
+          <parameter type-id='type-id-190' is-artificial='yes'/>
+          <!-- parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Slicer::slice_new(Arc_ptr) -->
+        <function-decl name='slice_new' mangled-name='_ZN6Slicer9slice_newEP3Arc' filepath='libnurbs/internals/slicer.cc' line='1068' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Slicer*' -->
+          <parameter type-id='type-id-190' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Slicer::slice(Arc_ptr) -->
+        <function-decl name='slice' mangled-name='_ZN6Slicer5sliceEP3Arc' filepath='libnurbs/internals/slicer.cc' line='1165' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Slicer*' -->
+          <parameter type-id='type-id-190' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Slicer::set_ulinear(int) -->
+        <function-decl name='set_ulinear' mangled-name='_ZN6Slicer11set_ulinearEi' filepath='libnurbs/internals/slicer.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Slicer*' -->
+          <parameter type-id='type-id-190' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Slicer::set_vlinear(int) -->
+        <function-decl name='set_vlinear' mangled-name='_ZN6Slicer11set_vlinearEi' filepath='libnurbs/internals/slicer.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Slicer*' -->
+          <parameter type-id='type-id-190' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- struct Pspec -->
-    <class-decl name='Pspec' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/patch.h' line='46' column='1' id='type-id-267'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- REAL Pspec::range[3] -->
-        <var-decl name='range' type-id='type-id-230' visibility='default' filepath='libnurbs/internals/patch.h' line='47' column='1'/>
+    <!-- class Sorter -->
+    <class-decl name='Sorter' visibility='default' filepath='libnurbs/internals/sorter.h' line='36' column='1' is-declaration-only='yes' id='type-id-153'>
+      <data-member access='private' layout-offset-in-bits='64'>
+        <!-- int Sorter::es -->
+        <var-decl name='es' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/sorter.h' line='49' column='1'/>
       </data-member>
-      <data-member access='public' layout-offset-in-bits='96'>
-        <!-- REAL Pspec::sidestep[2] -->
-        <var-decl name='sidestep' type-id='type-id-164' visibility='default' filepath='libnurbs/internals/patch.h' line='48' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- REAL Pspec::stepsize -->
-        <var-decl name='stepsize' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/patch.h' line='49' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- REAL Pspec::minstepsize -->
-        <var-decl name='minstepsize' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/patch.h' line='50' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='224'>
-        <!-- int Pspec::needsSubdivision -->
-        <var-decl name='needsSubdivision' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patch.h' line='51' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- Curve& -->
-    <reference-type-def kind='lvalue' type-id='type-id-265' size-in-bits='64' id='type-id-269'/>
-    <!-- Patch& -->
-    <reference-type-def kind='lvalue' type-id='type-id-266' size-in-bits='64' id='type-id-273'/>
-    <!-- Patchspec[2] -->
-    <array-type-def dimensions='1' type-id='type-id-274' size-in-bits='640' id='type-id-271'>
-      <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
-    </array-type-def>
-    <!-- REAL[120] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='3840' id='type-id-268'>
-      <!-- <anonymous range>[120] -->
-      <subrange length='120' type-id='type-id-3' id='type-id-275'/>
-    </array-type-def>
-    <!-- REAL[2880] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='92160' id='type-id-270'>
-      <!-- <anonymous range>[2880] -->
-      <subrange length='2880' type-id='type-id-3' id='type-id-276'/>
-    </array-type-def>
-    <!-- REAL[2][5] -->
-    <array-type-def dimensions='2' type-id='type-id-1' size-in-bits='320' id='type-id-272'>
-      <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
-      <!-- <anonymous range>[5] -->
-      <subrange length='5' type-id='type-id-3' id='type-id-190'/>
-    </array-type-def>
-    <!-- struct Patchspec -->
-    <class-decl name='Patchspec' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/patch.h' line='54' column='1' id='type-id-274'>
-      <!-- struct Pspec -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-267'/>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- int Patchspec::order -->
-        <var-decl name='order' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patch.h' line='55' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='288'>
-        <!-- int Patchspec::stride -->
-        <var-decl name='stride' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patch.h' line='56' column='1'/>
-      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- Sorter::Sorter(int) -->
+        <function-decl name='Sorter' filepath='libnurbs/internals/sorter.cc' line='44' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Sorter*' -->
+          <parameter type-id='type-id-185' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Sorter::qs1(char*, char*) -->
+        <function-decl name='qs1' mangled-name='_ZN6Sorter3qs1EPcS0_' filepath='libnurbs/internals/sorter.cc' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Sorter*' -->
+          <parameter type-id='type-id-185' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Sorter::qsort(void*, int) -->
+        <function-decl name='qsort' mangled-name='_ZN6Sorter5qsortEPvi' filepath='libnurbs/internals/sorter.cc' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Sorter*' -->
+          <parameter type-id='type-id-185' is-artificial='yes'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes' vtable-offset='-1'>
+        <!-- Sorter::~Sorter(int) -->
+        <function-decl name='~Sorter' filepath='libnurbs/internals/sorter.h' line='39' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Sorter*' -->
+          <parameter type-id='type-id-185' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='protected' vtable-offset='2'>
+        <!-- int Sorter::qscmp(char*, char*) -->
+        <function-decl name='qscmp' mangled-name='_ZN6Sorter5qscmpEPcS0_' filepath='libnurbs/internals/sorter.cc' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Sorter*' -->
+          <parameter type-id='type-id-185' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='protected' vtable-offset='3'>
+        <!-- void Sorter::qsexc(char*, char*) -->
+        <function-decl name='qsexc' mangled-name='_ZN6Sorter5qsexcEPcS0_' filepath='libnurbs/internals/sorter.cc' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Sorter*' -->
+          <parameter type-id='type-id-185' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='protected' vtable-offset='4'>
+        <!-- void Sorter::qstexc(char*, char*, char*) -->
+        <function-decl name='qstexc' mangled-name='_ZN6Sorter6qstexcEPcS0_S0_' filepath='libnurbs/internals/sorter.cc' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Sorter*' -->
+          <parameter type-id='type-id-185' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
     </class-decl>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/arctess.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- ArcTessellator* const -->
-    <qualified-type-def type-id='type-id-148' const='yes' id='type-id-277'/>
-    <!-- Pool* const -->
-    <qualified-type-def type-id='type-id-117' const='yes' id='type-id-278'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/backend.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- REAL[3][4] -->
-    <array-type-def dimensions='2' type-id='type-id-1' size-in-bits='384' id='type-id-105'>
+    <array-type-def dimensions='2' type-id='type-id-1' size-in-bits='384' id='type-id-138'>
       <!-- <anonymous range>[3] -->
-      <subrange length='3' type-id='type-id-3' id='type-id-68'/>
+      <subrange length='3' type-id='type-id-3' id='type-id-90'/>
       <!-- <anonymous range>[4] -->
-      <subrange length='4' type-id='type-id-3' id='type-id-65'/>
+      <subrange length='4' type-id='type-id-3' id='type-id-61'/>
     </array-type-def>
+    <!-- class GridTrimVertex -->
+    <class-decl name='GridTrimVertex' size-in-bits='384' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='45' column='1' id='type-id-195'>
+      <!-- class PooledObj -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- TrimVertex GridTrimVertex::dummyt -->
+        <var-decl name='dummyt' type-id='type-id-128' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='47' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='128'>
+        <!-- GridVertex GridTrimVertex::dummyg -->
+        <var-decl name='dummyg' type-id='type-id-196' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='48' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='256'>
+        <!-- TrimVertex* GridTrimVertex::t -->
+        <var-decl name='t' type-id='type-id-127' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='51' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='320'>
+        <!-- GridVertex* GridTrimVertex::g -->
+        <var-decl name='g' type-id='type-id-140' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='52' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- GridTrimVertex::GridTrimVertex() -->
+        <function-decl name='GridTrimVertex' filepath='libnurbs/internals/gridtrimvertex.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GridTrimVertex*' -->
+          <parameter type-id='type-id-141' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int GridTrimVertex::isGridVert() -->
+        <function-decl name='isGridVert' mangled-name='_ZN14GridTrimVertex10isGridVertEv' filepath='libnurbs/internals/gridtrimvertex.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GridTrimVertex*' -->
+          <parameter type-id='type-id-141' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void GridTrimVertex::set(TrimVertex*) -->
+        <function-decl name='set' mangled-name='_ZN14GridTrimVertex3setEP10TrimVertex' filepath='libnurbs/internals/gridtrimvertex.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GridTrimVertex*' -->
+          <parameter type-id='type-id-141' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void GridTrimVertex::set(long int, long int) -->
+        <function-decl name='set' mangled-name='_ZN14GridTrimVertex3setEll' filepath='libnurbs/internals/gridtrimvertex.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GridTrimVertex*' -->
+          <parameter type-id='type-id-141' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int GridTrimVertex::isTrimVert() -->
+        <function-decl name='isTrimVert' mangled-name='_ZN14GridTrimVertex10isTrimVertEv' filepath='libnurbs/internals/gridtrimvertex.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GridTrimVertex*' -->
+          <parameter type-id='type-id-141' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void GridTrimVertex::set(REAL, REAL) -->
+        <function-decl name='set' mangled-name='_ZN14GridTrimVertex3setEff' filepath='libnurbs/internals/gridtrimvertex.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GridTrimVertex*' -->
+          <parameter type-id='type-id-141' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
     <!-- struct GridVertex -->
-    <class-decl name='GridVertex' size-in-bits='128' is-struct='yes' visibility='default' filepath='libnurbs/internals/gridvertex.h' line='39' column='1' id='type-id-219'>
+    <class-decl name='GridVertex' size-in-bits='128' is-struct='yes' visibility='default' filepath='libnurbs/internals/gridvertex.h' line='39' column='1' id='type-id-196'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- long int GridVertex::gparam[2] -->
-        <var-decl name='gparam' type-id='type-id-165' visibility='default' filepath='libnurbs/internals/gridvertex.h' line='40' column='1'/>
+        <var-decl name='gparam' type-id='type-id-93' visibility='default' filepath='libnurbs/internals/gridvertex.h' line='40' column='1'/>
       </data-member>
       <member-function access='public' constructor='yes'>
         <!-- GridVertex::GridVertex() -->
         <function-decl name='GridVertex' filepath='libnurbs/internals/gridvertex.h' line='41' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'GridVertex*' -->
-          <parameter type-id='type-id-220' is-artificial='yes'/>
+          <parameter type-id='type-id-140' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
         <!-- GridVertex::GridVertex(long int, long int) -->
         <function-decl name='GridVertex' filepath='libnurbs/internals/gridvertex.h' line='42' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'GridVertex*' -->
-          <parameter type-id='type-id-220' is-artificial='yes'/>
+          <parameter type-id='type-id-140' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- class GridTrimVertex -->
-    <class-decl name='GridTrimVertex' size-in-bits='384' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='45' column='1' id='type-id-209'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- TrimVertex GridTrimVertex::dummyt -->
-        <var-decl name='dummyt' type-id='type-id-172' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='47' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- GridVertex GridTrimVertex::dummyg -->
-        <var-decl name='dummyg' type-id='type-id-219' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='48' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='256'>
-        <!-- TrimVertex* GridTrimVertex::t -->
-        <var-decl name='t' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='51' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='320'>
-        <!-- GridVertex* GridTrimVertex::g -->
-        <var-decl name='g' type-id='type-id-220' visibility='default' filepath='libnurbs/internals/gridtrimvertex.h' line='52' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- GridTrimVertex::GridTrimVertex() -->
-        <function-decl name='GridTrimVertex' filepath='libnurbs/internals/gridtrimvertex.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'GridTrimVertex*' -->
-          <parameter type-id='type-id-188' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
+      <member-function access='public'>
+        <!-- long int GridVertex::nextu() -->
+        <function-decl name='nextu' mangled-name='_ZN10GridVertex5nextuEv' filepath='libnurbs/internals/gridvertex.h' line='44' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GridVertex*' -->
+          <parameter type-id='type-id-140' is-artificial='yes'/>
+          <!-- long int -->
+          <return type-id='type-id-38'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- long int GridVertex::prevu() -->
+        <function-decl name='prevu' mangled-name='_ZN10GridVertex5prevuEv' filepath='libnurbs/internals/gridvertex.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'GridVertex*' -->
+          <parameter type-id='type-id-140' is-artificial='yes'/>
+          <!-- long int -->
+          <return type-id='type-id-38'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- Backend* -->
-    <pointer-type-def type-id='type-id-73' size-in-bits='64' id='type-id-106'/>
-    <!-- Backend* const -->
-    <qualified-type-def type-id='type-id-106' const='yes' id='type-id-279'/>
+    <pointer-type-def type-id='type-id-64' size-in-bits='64' id='type-id-139'/>
     <!-- BasicCurveEvaluator& -->
-    <qualified-type-def type-id='type-id-88' id='type-id-103'/>
-    <!-- BasicCurveEvaluator& -->
-    <reference-type-def kind='lvalue' type-id='type-id-13' size-in-bits='64' id='type-id-88'/>
+    <reference-type-def kind='lvalue' type-id='type-id-16' size-in-bits='64' id='type-id-79'/>
     <!-- BasicSurfaceEvaluator& -->
-    <qualified-type-def type-id='type-id-89' id='type-id-104'/>
-    <!-- BasicSurfaceEvaluator& -->
-    <reference-type-def kind='lvalue' type-id='type-id-48' size-in-bits='64' id='type-id-89'/>
+    <reference-type-def kind='lvalue' type-id='type-id-51' size-in-bits='64' id='type-id-80'/>
     <!-- GridTrimVertex* -->
-    <pointer-type-def type-id='type-id-209' size-in-bits='64' id='type-id-188'/>
-    <!-- GridTrimVertex* const -->
-    <qualified-type-def type-id='type-id-188' const='yes' id='type-id-280'/>
+    <pointer-type-def type-id='type-id-195' size-in-bits='64' id='type-id-141'/>
     <!-- GridVertex* -->
-    <pointer-type-def type-id='type-id-219' size-in-bits='64' id='type-id-220'/>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/bin.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- Bin* const -->
-    <qualified-type-def type-id='type-id-151' const='yes' id='type-id-281'/>
+    <pointer-type-def type-id='type-id-196' size-in-bits='64' id='type-id-140'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/cachingeval.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
   </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/ccw.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- Subdivider* const -->
-    <qualified-type-def type-id='type-id-128' const='yes' id='type-id-282'/>
-  </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/coveandtiler.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
+    <!-- class CoveAndTiler -->
+    <class-decl name='CoveAndTiler' size-in-bits='2688' visibility='default' filepath='libnurbs/internals/coveandtiler.h' line='46' column='1' id='type-id-188'>
+      <!-- class TrimRegion -->
+      <base-class access='public' layout-offset-in-bits='192' is-virtual='yes' type-id='type-id-197'/>
+      <data-member access='private' layout-offset-in-bits='64'>
+        <!-- Backend& CoveAndTiler::backend -->
+        <var-decl name='backend' type-id='type-id-167' visibility='default' filepath='libnurbs/internals/coveandtiler.h' line='52' column='1'/>
+      </data-member>
+      <data-member access='private' static='yes'>
+        <!-- static const int CoveAndTiler::MAXSTRIPSIZE -->
+        <var-decl name='MAXSTRIPSIZE' type-id='type-id-116' mangled-name='_ZN12CoveAndTiler12MAXSTRIPSIZEE' visibility='default' filepath='libnurbs/internals/coveandtiler.cc' line='50' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- CoveAndTiler::CoveAndTiler(int, void**, Backend&) -->
+        <function-decl name='CoveAndTiler' filepath='libnurbs/internals/coveandtiler.cc' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- artificial parameter of type 'void**' -->
+          <parameter type-id='type-id-191' is-artificial='yes'/>
+          <!-- parameter of type 'Backend&' -->
+          <parameter type-id='type-id-167'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes'>
+        <!-- CoveAndTiler::~CoveAndTiler(int, void**) -->
+        <function-decl name='~CoveAndTiler' filepath='libnurbs/internals/coveandtiler.cc' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- artificial parameter of type 'void**' -->
+          <parameter type-id='type-id-191' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::output(TrimVertex*) -->
+        <function-decl name='output' mangled-name='_ZN12CoveAndTiler6outputEP10TrimVertex' filepath='libnurbs/internals/coveandtiler.cc' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::output(GridVertex&) -->
+        <function-decl name='output' mangled-name='_ZN12CoveAndTiler6outputER10GridVertex' filepath='libnurbs/internals/coveandtiler.cc' line='60' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- parameter of type 'GridVertex&' -->
+          <parameter type-id='type-id-199'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::output(GridTrimVertex&) -->
+        <function-decl name='output' mangled-name='_ZN12CoveAndTiler6outputER14GridTrimVertex' filepath='libnurbs/internals/coveandtiler.cc' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- parameter of type 'GridTrimVertex&' -->
+          <parameter type-id='type-id-200'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveLR() -->
+        <function-decl name='coveLR' mangled-name='_ZN12CoveAndTiler6coveLREv' filepath='libnurbs/internals/coveandtiler.cc' line='409' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveLL() -->
+        <function-decl name='coveLL' mangled-name='_ZN12CoveAndTiler6coveLLEv' filepath='libnurbs/internals/coveandtiler.cc' line='348' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveUL() -->
+        <function-decl name='coveUL' mangled-name='_ZN12CoveAndTiler6coveULEv' filepath='libnurbs/internals/coveandtiler.cc' line='287' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveUR() -->
+        <function-decl name='coveUR' mangled-name='_ZN12CoveAndTiler6coveUREv' filepath='libnurbs/internals/coveandtiler.cc' line='225' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveLowerRightNoGrid(TrimVertex*) -->
+        <function-decl name='coveLowerRightNoGrid' mangled-name='_ZN12CoveAndTiler20coveLowerRightNoGridEP10TrimVertex' filepath='libnurbs/internals/coveandtiler.cc' line='397' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveLowerRight() -->
+        <function-decl name='coveLowerRight' mangled-name='_ZN12CoveAndTiler14coveLowerRightEv' filepath='libnurbs/internals/coveandtiler.cc' line='381' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveLowerLeftNoGrid(TrimVertex*) -->
+        <function-decl name='coveLowerLeftNoGrid' mangled-name='_ZN12CoveAndTiler19coveLowerLeftNoGridEP10TrimVertex' filepath='libnurbs/internals/coveandtiler.cc' line='336' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveLowerLeft() -->
+        <function-decl name='coveLowerLeft' mangled-name='_ZN12CoveAndTiler13coveLowerLeftEv' filepath='libnurbs/internals/coveandtiler.cc' line='320' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveUpperLeftNoGrid(TrimVertex*) -->
+        <function-decl name='coveUpperLeftNoGrid' mangled-name='_ZN12CoveAndTiler19coveUpperLeftNoGridEP10TrimVertex' filepath='libnurbs/internals/coveandtiler.cc' line='275' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveUpperLeft() -->
+        <function-decl name='coveUpperLeft' mangled-name='_ZN12CoveAndTiler13coveUpperLeftEv' filepath='libnurbs/internals/coveandtiler.cc' line='259' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveUpperRightNoGrid(TrimVertex*) -->
+        <function-decl name='coveUpperRightNoGrid' mangled-name='_ZN12CoveAndTiler20coveUpperRightNoGridEP10TrimVertex' filepath='libnurbs/internals/coveandtiler.cc' line='213' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveUpperRight() -->
+        <function-decl name='coveUpperRight' mangled-name='_ZN12CoveAndTiler14coveUpperRightEv' filepath='libnurbs/internals/coveandtiler.cc' line='197' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::tile(long int, long int, long int) -->
+        <function-decl name='tile' mangled-name='_ZN12CoveAndTiler4tileElll' filepath='libnurbs/internals/coveandtiler.cc' line='181' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void CoveAndTiler::coveAndTile() -->
+        <function-decl name='coveAndTile' mangled-name='_ZN12CoveAndTiler11coveAndTileEv' filepath='libnurbs/internals/coveandtiler.cc' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'CoveAndTiler*' -->
+          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- struct Gridline -->
+    <class-decl name='Gridline' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/gridline.h' line='39' column='1' id='type-id-201'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- long int Gridline::v -->
+        <var-decl name='v' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/gridline.h' line='40' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- REAL Gridline::vval -->
+        <var-decl name='vval' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/gridline.h' line='41' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- long int Gridline::vindex -->
+        <var-decl name='vindex' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/gridline.h' line='42' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- long int Gridline::ustart -->
+        <var-decl name='ustart' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/gridline.h' line='43' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- long int Gridline::uend -->
+        <var-decl name='uend' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/gridline.h' line='44' column='1'/>
+      </data-member>
+    </class-decl>
     <!-- class Jarcloc -->
-    <class-decl name='Jarcloc' size-in-bits='192' visibility='default' filepath='libnurbs/internals/jarcloc.h' line='41' column='1' id='type-id-213'>
+    <class-decl name='Jarcloc' size-in-bits='192' visibility='default' filepath='libnurbs/internals/jarcloc.h' line='41' column='1' id='type-id-202'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- Arc_ptr Jarcloc::arc -->
-        <var-decl name='arc' type-id='type-id-124' visibility='default' filepath='libnurbs/internals/jarcloc.h' line='43' column='1'/>
+        <var-decl name='arc' type-id='type-id-112' visibility='default' filepath='libnurbs/internals/jarcloc.h' line='43' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- TrimVertex* Jarcloc::p -->
-        <var-decl name='p' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/jarcloc.h' line='44' column='1'/>
+        <var-decl name='p' type-id='type-id-127' visibility='default' filepath='libnurbs/internals/jarcloc.h' line='44' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
         <!-- TrimVertex* Jarcloc::plast -->
-        <var-decl name='plast' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/jarcloc.h' line='45' column='1'/>
+        <var-decl name='plast' type-id='type-id-127' visibility='default' filepath='libnurbs/internals/jarcloc.h' line='45' column='1'/>
       </data-member>
+      <member-function access='private'>
+        <!-- TrimVertex* Jarcloc::getnextpt() -->
+        <function-decl name='getnextpt' mangled-name='_ZN7Jarcloc9getnextptEv' filepath='libnurbs/internals/jarcloc.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Jarcloc*' -->
+          <parameter type-id='type-id-203' is-artificial='yes'/>
+          <!-- TrimVertex* -->
+          <return type-id='type-id-127'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- TrimVertex* Jarcloc::getprevpt() -->
+        <function-decl name='getprevpt' mangled-name='_ZN7Jarcloc9getprevptEv' filepath='libnurbs/internals/jarcloc.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Jarcloc*' -->
+          <parameter type-id='type-id-203' is-artificial='yes'/>
+          <!-- TrimVertex* -->
+          <return type-id='type-id-127'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Jarcloc::reverse() -->
+        <function-decl name='reverse' mangled-name='_ZN7Jarcloc7reverseEv' filepath='libnurbs/internals/jarcloc.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Jarcloc*' -->
+          <parameter type-id='type-id-203' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Jarcloc::init(Arc_ptr, long int, long int) -->
+        <function-decl name='init' mangled-name='_ZN7Jarcloc4initEP3Arcll' filepath='libnurbs/internals/jarcloc.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Jarcloc*' -->
+          <parameter type-id='type-id-203' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
     </class-decl>
     <!-- class Trimline -->
-    <class-decl name='Trimline' size-in-bits='832' visibility='default' filepath='libnurbs/internals/trimline.h' line='46' column='1' id='type-id-200'>
+    <class-decl name='Trimline' size-in-bits='832' visibility='default' filepath='libnurbs/internals/trimline.h' line='46' column='1' id='type-id-204'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- TrimVertex** Trimline::pts -->
-        <var-decl name='pts' type-id='type-id-130' visibility='default' filepath='libnurbs/internals/trimline.h' line='48' column='1'/>
+        <var-decl name='pts' type-id='type-id-176' visibility='default' filepath='libnurbs/internals/trimline.h' line='48' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- long int Trimline::numverts -->
-        <var-decl name='numverts' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/trimline.h' line='49' column='1'/>
+        <var-decl name='numverts' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/trimline.h' line='49' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
         <!-- long int Trimline::i -->
-        <var-decl name='i' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/trimline.h' line='50' column='1'/>
+        <var-decl name='i' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/trimline.h' line='50' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='192'>
         <!-- long int Trimline::size -->
-        <var-decl name='size' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/trimline.h' line='51' column='1'/>
+        <var-decl name='size' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/trimline.h' line='51' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='256'>
         <!-- Jarcloc Trimline::jarcl -->
-        <var-decl name='jarcl' type-id='type-id-213' visibility='default' filepath='libnurbs/internals/trimline.h' line='52' column='1'/>
+        <var-decl name='jarcl' type-id='type-id-202' visibility='default' filepath='libnurbs/internals/trimline.h' line='52' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='448'>
         <!-- TrimVertex Trimline::t -->
-        <var-decl name='t' type-id='type-id-172' visibility='default' filepath='libnurbs/internals/trimline.h' line='53' column='1'/>
+        <var-decl name='t' type-id='type-id-128' visibility='default' filepath='libnurbs/internals/trimline.h' line='53' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='576'>
         <!-- TrimVertex Trimline::b -->
-        <var-decl name='b' type-id='type-id-172' visibility='default' filepath='libnurbs/internals/trimline.h' line='53' column='1'/>
+        <var-decl name='b' type-id='type-id-128' visibility='default' filepath='libnurbs/internals/trimline.h' line='53' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='704'>
         <!-- TrimVertex* Trimline::tinterp -->
-        <var-decl name='tinterp' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/trimline.h' line='54' column='1'/>
+        <var-decl name='tinterp' type-id='type-id-127' visibility='default' filepath='libnurbs/internals/trimline.h' line='54' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='768'>
         <!-- TrimVertex* Trimline::binterp -->
-        <var-decl name='binterp' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/trimline.h' line='54' column='1'/>
+        <var-decl name='binterp' type-id='type-id-127' visibility='default' filepath='libnurbs/internals/trimline.h' line='54' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- Trimline::Trimline() -->
         <function-decl name='Trimline' filepath='libnurbs/internals/trimline.h' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Trimline*' -->
-          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <parameter type-id='type-id-205' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- Trimline::~Trimline(int) -->
         <function-decl name='~Trimline' filepath='libnurbs/internals/trimline.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Trimline*' -->
-          <parameter type-id='type-id-198' is-artificial='yes'/>
+          <parameter type-id='type-id-205' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- TrimVertex* Trimline::prev() -->
+        <function-decl name='prev' mangled-name='_ZN8Trimline4prevEv' filepath='libnurbs/internals/trimline.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- TrimVertex* -->
+          <return type-id='type-id-127'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- TrimVertex* Trimline::next() -->
+        <function-decl name='next' mangled-name='_ZN8Trimline4nextEv' filepath='libnurbs/internals/trimline.h' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- TrimVertex* -->
+          <return type-id='type-id-127'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- TrimVertex* Trimline::last() -->
+        <function-decl name='last' mangled-name='_ZN8Trimline4lastEv' filepath='libnurbs/internals/trimline.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- TrimVertex* -->
+          <return type-id='type-id-127'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- TrimVertex* Trimline::first() -->
+        <function-decl name='first' mangled-name='_ZN8Trimline5firstEv' filepath='libnurbs/internals/trimline.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- TrimVertex* -->
+          <return type-id='type-id-127'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Trimline::reset() -->
+        <function-decl name='reset' mangled-name='_ZN8Trimline5resetEv' filepath='libnurbs/internals/trimline.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Trimline::swap() -->
+        <function-decl name='swap' mangled-name='_ZN8Trimline4swapEv' filepath='libnurbs/internals/trimline.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Trimline::append(TrimVertex*) -->
+        <function-decl name='append' mangled-name='_ZN8Trimline6appendEP10TrimVertex' filepath='libnurbs/internals/trimline.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Trimline::getNextPt() -->
+        <function-decl name='getNextPt' mangled-name='_ZN8Trimline9getNextPtEv' filepath='libnurbs/internals/trimline.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Trimline::getPrevPt() -->
+        <function-decl name='getPrevPt' mangled-name='_ZN8Trimline9getPrevPtEv' filepath='libnurbs/internals/trimline.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Trimline::getNextPts(Arc_ptr) -->
+        <function-decl name='getNextPts' mangled-name='_ZN8Trimline10getNextPtsEP3Arc' filepath='libnurbs/internals/trimline.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Trimline::getPrevPts(Arc_ptr) -->
+        <function-decl name='getPrevPts' mangled-name='_ZN8Trimline10getPrevPtsEP3Arc' filepath='libnurbs/internals/trimline.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' static='yes'>
+        <!-- long int Trimline::interpvert(TrimVertex*, TrimVertex*, REAL) -->
+        <function-decl name='interpvert' mangled-name='_ZN8Trimline10interpvertEP10TrimVertexS1_S1_f' filepath='libnurbs/internals/trimline.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- long int -->
+          <return type-id='type-id-38'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Trimline::getPrevPts(REAL, Backend&) -->
+        <function-decl name='getPrevPts' mangled-name='_ZN8Trimline10getPrevPtsEfR7Backend' filepath='libnurbs/internals/trimline.h' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'Backend&' -->
+          <parameter type-id='type-id-167'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Trimline::getNextPts(REAL, Backend&) -->
+        <function-decl name='getNextPts' mangled-name='_ZN8Trimline10getNextPtsEfR7Backend' filepath='libnurbs/internals/trimline.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'Backend&' -->
+          <parameter type-id='type-id-167'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Trimline::grow(long int) -->
+        <function-decl name='grow' mangled-name='_ZN8Trimline4growEl' filepath='libnurbs/internals/trimline.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Trimline::init(long int, Arc_ptr, long int) -->
+        <function-decl name='init' mangled-name='_ZN8Trimline4initElP3Arcl' filepath='libnurbs/internals/trimline.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Trimline::init(TrimVertex*) -->
+        <function-decl name='init' mangled-name='_ZN8Trimline4initEP10TrimVertex' filepath='libnurbs/internals/trimline.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Trimline*' -->
+          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- class TrimRegion -->
-    <class-decl name='TrimRegion' size-in-bits='2560' visibility='default' filepath='libnurbs/internals/trimregion.h' line='46' column='1' id='type-id-173'>
+    <class-decl name='TrimRegion' size-in-bits='2560' visibility='default' filepath='libnurbs/internals/trimregion.h' line='46' column='1' id='type-id-197'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- Trimline TrimRegion::left -->
-        <var-decl name='left' type-id='type-id-200' visibility='default' filepath='libnurbs/internals/trimregion.h' line='49' column='1'/>
+        <var-decl name='left' type-id='type-id-204' visibility='default' filepath='libnurbs/internals/trimregion.h' line='49' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='832'>
         <!-- Trimline TrimRegion::right -->
-        <var-decl name='right' type-id='type-id-200' visibility='default' filepath='libnurbs/internals/trimregion.h' line='50' column='1'/>
+        <var-decl name='right' type-id='type-id-204' visibility='default' filepath='libnurbs/internals/trimregion.h' line='50' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1664'>
         <!-- Gridline TrimRegion::top -->
-        <var-decl name='top' type-id='type-id-203' visibility='default' filepath='libnurbs/internals/trimregion.h' line='51' column='1'/>
+        <var-decl name='top' type-id='type-id-201' visibility='default' filepath='libnurbs/internals/trimregion.h' line='51' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1984'>
         <!-- Gridline TrimRegion::bot -->
-        <var-decl name='bot' type-id='type-id-203' visibility='default' filepath='libnurbs/internals/trimregion.h' line='52' column='1'/>
+        <var-decl name='bot' type-id='type-id-201' visibility='default' filepath='libnurbs/internals/trimregion.h' line='52' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='2304'>
         <!-- Uarray TrimRegion::uarray -->
-        <var-decl name='uarray' type-id='type-id-204' visibility='default' filepath='libnurbs/internals/trimregion.h' line='53' column='1'/>
+        <var-decl name='uarray' type-id='type-id-206' visibility='default' filepath='libnurbs/internals/trimregion.h' line='53' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='2496'>
         <!-- REAL TrimRegion::oneOverDu -->
@@ -7192,202 +8739,246 @@
         <!-- TrimRegion::TrimRegion() -->
         <function-decl name='TrimRegion' filepath='libnurbs/internals/trimregion.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'TrimRegion*' -->
-          <parameter type-id='type-id-205' is-artificial='yes'/>
+          <parameter type-id='type-id-207' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void TrimRegion::init(REAL) -->
+        <function-decl name='init' mangled-name='_ZN10TrimRegion4initEf' filepath='libnurbs/internals/trimregion.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimRegion*' -->
+          <parameter type-id='type-id-207' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void TrimRegion::advance(REAL, REAL, REAL) -->
+        <function-decl name='advance' mangled-name='_ZN10TrimRegion7advanceEfff' filepath='libnurbs/internals/trimregion.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimRegion*' -->
+          <parameter type-id='type-id-207' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void TrimRegion::setDu(REAL) -->
+        <function-decl name='setDu' mangled-name='_ZN10TrimRegion5setDuEf' filepath='libnurbs/internals/trimregion.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimRegion*' -->
+          <parameter type-id='type-id-207' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void TrimRegion::getGridExtent(TrimVertex*, TrimVertex*) -->
+        <function-decl name='getGridExtent' mangled-name='_ZN10TrimRegion13getGridExtentEP10TrimVertexS1_' filepath='libnurbs/internals/trimregion.h' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimRegion*' -->
+          <parameter type-id='type-id-207' is-artificial='yes'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void TrimRegion::getGridExtent() -->
+        <function-decl name='getGridExtent' mangled-name='_ZN10TrimRegion13getGridExtentEv' filepath='libnurbs/internals/trimregion.h' line='62' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimRegion*' -->
+          <parameter type-id='type-id-207' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int TrimRegion::canTile() -->
+        <function-decl name='canTile' mangled-name='_ZN10TrimRegion7canTileEv' filepath='libnurbs/internals/trimregion.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimRegion*' -->
+          <parameter type-id='type-id-207' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void TrimRegion::getPts(Backend&) -->
+        <function-decl name='getPts' mangled-name='_ZN10TrimRegion6getPtsER7Backend' filepath='libnurbs/internals/trimregion.h' line='60' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimRegion*' -->
+          <parameter type-id='type-id-207' is-artificial='yes'/>
+          <!-- parameter of type 'Backend&' -->
+          <parameter type-id='type-id-167'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void TrimRegion::getPts(Arc_ptr) -->
+        <function-decl name='getPts' mangled-name='_ZN10TrimRegion6getPtsEP3Arc' filepath='libnurbs/internals/trimregion.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimRegion*' -->
+          <parameter type-id='type-id-207' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void TrimRegion::init(long int, Arc_ptr) -->
+        <function-decl name='init' mangled-name='_ZN10TrimRegion4initElP3Arc' filepath='libnurbs/internals/trimregion.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'TrimRegion*' -->
+          <parameter type-id='type-id-207' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- class Uarray -->
-    <class-decl name='Uarray' size-in-bits='192' visibility='default' filepath='libnurbs/internals/uarray.h' line='44' column='1' id='type-id-204'>
+    <class-decl name='Uarray' size-in-bits='192' visibility='default' filepath='libnurbs/internals/uarray.h' line='44' column='1' id='type-id-206'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- long int Uarray::size -->
-        <var-decl name='size' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/uarray.h' line='46' column='1'/>
+        <var-decl name='size' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/uarray.h' line='46' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- long int Uarray::ulines -->
-        <var-decl name='ulines' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/uarray.h' line='47' column='1'/>
+        <var-decl name='ulines' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/uarray.h' line='47' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
         <!-- REAL* Uarray::uarray -->
-        <var-decl name='uarray' type-id='type-id-16' visibility='default' filepath='libnurbs/internals/uarray.h' line='52' column='1'/>
+        <var-decl name='uarray' type-id='type-id-22' visibility='default' filepath='libnurbs/internals/uarray.h' line='52' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- Uarray::Uarray() -->
         <function-decl name='Uarray' filepath='libnurbs/internals/uarray.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Uarray*' -->
-          <parameter type-id='type-id-214' is-artificial='yes'/>
+          <parameter type-id='type-id-208' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- Uarray::~Uarray(int) -->
         <function-decl name='~Uarray' filepath='libnurbs/internals/uarray.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Uarray*' -->
-          <parameter type-id='type-id-214' is-artificial='yes'/>
+          <parameter type-id='type-id-208' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- struct Gridline -->
-    <class-decl name='Gridline' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/gridline.h' line='39' column='1' id='type-id-203'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- long int Gridline::v -->
-        <var-decl name='v' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/gridline.h' line='40' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- REAL Gridline::vval -->
-        <var-decl name='vval' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/gridline.h' line='41' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- long int Gridline::vindex -->
-        <var-decl name='vindex' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/gridline.h' line='42' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- long int Gridline::ustart -->
-        <var-decl name='ustart' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/gridline.h' line='43' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- long int Gridline::uend -->
-        <var-decl name='uend' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/gridline.h' line='44' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- class CoveAndTiler -->
-    <class-decl name='CoveAndTiler' size-in-bits='2688' visibility='default' filepath='libnurbs/internals/coveandtiler.h' line='46' column='1' id='type-id-160'>
-      <!-- class TrimRegion -->
-      <base-class access='public' layout-offset-in-bits='192' is-virtual='yes' type-id='type-id-173'/>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Backend& CoveAndTiler::backend -->
-        <var-decl name='backend' type-id='type-id-109' visibility='default' filepath='libnurbs/internals/coveandtiler.h' line='52' column='1'/>
-      </data-member>
-      <data-member access='private' static='yes'>
-        <!-- static const int CoveAndTiler::MAXSTRIPSIZE -->
-        <var-decl name='MAXSTRIPSIZE' type-id='type-id-174' mangled-name='_ZN12CoveAndTiler12MAXSTRIPSIZEE' visibility='default' filepath='libnurbs/internals/coveandtiler.cc' line='50' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- CoveAndTiler::CoveAndTiler(int, void**, Backend&) -->
-        <function-decl name='CoveAndTiler' filepath='libnurbs/internals/coveandtiler.cc' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'CoveAndTiler*' -->
-          <parameter type-id='type-id-175' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
-          <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-111'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- CoveAndTiler::~CoveAndTiler(int, void**) -->
-        <function-decl name='~CoveAndTiler' filepath='libnurbs/internals/coveandtiler.cc' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'CoveAndTiler*' -->
-          <parameter type-id='type-id-175' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
+      <member-function access='private'>
+        <!-- long int Uarray::init(REAL, Arc_ptr, Arc_ptr) -->
+        <function-decl name='init' mangled-name='_ZN6Uarray4initEfP3ArcS1_' filepath='libnurbs/internals/uarray.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Uarray*' -->
+          <parameter type-id='type-id-208' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- parameter of type 'typedef Arc_ptr' -->
+          <parameter type-id='type-id-112'/>
+          <!-- long int -->
+          <return type-id='type-id-38'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- CoveAndTiler* -->
-    <pointer-type-def type-id='type-id-160' size-in-bits='64' id='type-id-175'/>
-    <!-- CoveAndTiler* const -->
-    <qualified-type-def type-id='type-id-175' const='yes' id='type-id-283'/>
+    <pointer-type-def type-id='type-id-188' size-in-bits='64' id='type-id-198'/>
     <!-- GridTrimVertex& -->
-    <qualified-type-def type-id='type-id-284' id='type-id-285'/>
-    <!-- GridTrimVertex& -->
-    <reference-type-def kind='lvalue' type-id='type-id-209' size-in-bits='64' id='type-id-284'/>
+    <reference-type-def kind='lvalue' type-id='type-id-195' size-in-bits='64' id='type-id-200'/>
     <!-- GridVertex& -->
-    <qualified-type-def type-id='type-id-286' id='type-id-287'/>
-    <!-- GridVertex& -->
-    <reference-type-def kind='lvalue' type-id='type-id-219' size-in-bits='64' id='type-id-286'/>
-    <!-- GridVertex* const -->
-    <qualified-type-def type-id='type-id-220' const='yes' id='type-id-288'/>
+    <reference-type-def kind='lvalue' type-id='type-id-196' size-in-bits='64' id='type-id-199'/>
     <!-- Jarcloc* -->
-    <pointer-type-def type-id='type-id-213' size-in-bits='64' id='type-id-289'/>
+    <pointer-type-def type-id='type-id-202' size-in-bits='64' id='type-id-203'/>
     <!-- TrimRegion* -->
-    <pointer-type-def type-id='type-id-173' size-in-bits='64' id='type-id-205'/>
+    <pointer-type-def type-id='type-id-197' size-in-bits='64' id='type-id-207'/>
     <!-- Trimline* -->
-    <pointer-type-def type-id='type-id-200' size-in-bits='64' id='type-id-198'/>
-    <!-- Trimline* const -->
-    <qualified-type-def type-id='type-id-198' const='yes' id='type-id-290'/>
+    <pointer-type-def type-id='type-id-204' size-in-bits='64' id='type-id-205'/>
     <!-- Uarray* -->
-    <pointer-type-def type-id='type-id-204' size-in-bits='64' id='type-id-214'/>
+    <pointer-type-def type-id='type-id-206' size-in-bits='64' id='type-id-208'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/curve.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- Quiltspec[2] -->
-    <array-type-def dimensions='1' type-id='type-id-189' size-in-bits='640' id='type-id-185'>
+    <array-type-def dimensions='1' type-id='type-id-209' size-in-bits='640' id='type-id-164'>
       <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
+      <subrange length='2' type-id='type-id-3' id='type-id-87'/>
     </array-type-def>
     <!-- REAL[120] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='3840' id='type-id-268'>
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='3840' id='type-id-210'>
       <!-- <anonymous range>[120] -->
-      <subrange length='120' type-id='type-id-3' id='type-id-275'/>
+      <subrange length='120' type-id='type-id-3' id='type-id-211'/>
     </array-type-def>
     <!-- REAL[5] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='160' id='type-id-178'>
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='160' id='type-id-212'>
       <!-- <anonymous range>[5] -->
-      <subrange length='5' type-id='type-id-3' id='type-id-190'/>
+      <subrange length='5' type-id='type-id-3' id='type-id-213'/>
     </array-type-def>
     <!-- REAL[5][5] -->
-    <array-type-def dimensions='2' type-id='type-id-1' size-in-bits='800' id='type-id-206'>
+    <array-type-def dimensions='2' type-id='type-id-1' size-in-bits='800' id='type-id-214'>
       <!-- <anonymous range>[5] -->
-      <subrange length='5' type-id='type-id-3' id='type-id-190'/>
+      <subrange length='5' type-id='type-id-3' id='type-id-213'/>
       <!-- <anonymous range>[5] -->
-      <subrange length='5' type-id='type-id-3' id='type-id-190'/>
+      <subrange length='5' type-id='type-id-3' id='type-id-213'/>
     </array-type-def>
     <!-- float[4] -->
-    <array-type-def dimensions='1' type-id='type-id-28' size-in-bits='128' id='type-id-291'>
+    <array-type-def dimensions='1' type-id='type-id-15' size-in-bits='128' id='type-id-215'>
       <!-- <anonymous range>[4] -->
-      <subrange length='4' type-id='type-id-3' id='type-id-65'/>
+      <subrange length='4' type-id='type-id-3' id='type-id-61'/>
     </array-type-def>
     <!-- int[2] -->
-    <array-type-def dimensions='1' type-id='type-id-11' size-in-bits='64' id='type-id-211'>
+    <array-type-def dimensions='1' type-id='type-id-8' size-in-bits='64' id='type-id-216'>
       <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
+      <subrange length='2' type-id='type-id-3' id='type-id-87'/>
     </array-type-def>
     <!-- class Curve -->
-    <class-decl name='Curve' size-in-bits='8128' visibility='default' filepath='libnurbs/internals/curve.h' line='46' column='1' id='type-id-265'>
+    <class-decl name='Curve' size-in-bits='8128' visibility='default' filepath='libnurbs/internals/curve.h' line='46' column='1' id='type-id-217'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- Curve* Curve::next -->
-        <var-decl name='next' type-id='type-id-247' visibility='default' filepath='libnurbs/internals/curve.h' line='51' column='1'/>
+        <var-decl name='next' type-id='type-id-145' visibility='default' filepath='libnurbs/internals/curve.h' line='51' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- Mapdesc* Curve::mapdesc -->
-        <var-decl name='mapdesc' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/curve.h' line='53' column='1'/>
+        <var-decl name='mapdesc' type-id='type-id-163' visibility='default' filepath='libnurbs/internals/curve.h' line='53' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
         <!-- int Curve::stride -->
-        <var-decl name='stride' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/curve.h' line='54' column='1'/>
+        <var-decl name='stride' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/curve.h' line='54' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='160'>
         <!-- int Curve::order -->
-        <var-decl name='order' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/curve.h' line='55' column='1'/>
+        <var-decl name='order' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/curve.h' line='55' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='192'>
         <!-- int Curve::cullval -->
-        <var-decl name='cullval' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/curve.h' line='56' column='1'/>
+        <var-decl name='cullval' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/curve.h' line='56' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='224'>
         <!-- int Curve::needsSampling -->
-        <var-decl name='needsSampling' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/curve.h' line='57' column='1'/>
+        <var-decl name='needsSampling' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/curve.h' line='57' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='256'>
         <!-- REAL Curve::cpts[120] -->
-        <var-decl name='cpts' type-id='type-id-268' visibility='default' filepath='libnurbs/internals/curve.h' line='58' column='1'/>
+        <var-decl name='cpts' type-id='type-id-210' visibility='default' filepath='libnurbs/internals/curve.h' line='58' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='4096'>
         <!-- REAL Curve::spts[120] -->
-        <var-decl name='spts' type-id='type-id-268' visibility='default' filepath='libnurbs/internals/curve.h' line='59' column='1'/>
+        <var-decl name='spts' type-id='type-id-210' visibility='default' filepath='libnurbs/internals/curve.h' line='59' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='7936'>
         <!-- REAL Curve::stepsize -->
@@ -7399,47 +8990,170 @@
       </data-member>
       <data-member access='private' layout-offset-in-bits='8000'>
         <!-- REAL Curve::range[3] -->
-        <var-decl name='range' type-id='type-id-230' visibility='default' filepath='libnurbs/internals/curve.h' line='62' column='1'/>
+        <var-decl name='range' type-id='type-id-89' visibility='default' filepath='libnurbs/internals/curve.h' line='62' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- Curve::Curve(Quilt*, REAL, REAL, Curve*) -->
         <function-decl name='Curve' filepath='libnurbs/internals/curve.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Curve*' -->
-          <parameter type-id='type-id-247' is-artificial='yes'/>
+          <parameter type-id='type-id-145' is-artificial='yes'/>
           <!-- parameter of type 'Quilt*' -->
-          <parameter type-id='type-id-125'/>
+          <parameter type-id='type-id-148'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'Curve*' -->
-          <parameter type-id='type-id-247'/>
+          <parameter type-id='type-id-145'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
         <!-- Curve::Curve(Curve&, REAL, Curve*) -->
         <function-decl name='Curve' filepath='libnurbs/internals/curve.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Curve*' -->
-          <parameter type-id='type-id-247' is-artificial='yes'/>
+          <parameter type-id='type-id-145' is-artificial='yes'/>
           <!-- parameter of type 'Curve&' -->
-          <parameter type-id='type-id-269'/>
+          <parameter type-id='type-id-218'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'Curve*' -->
-          <parameter type-id='type-id-247'/>
+          <parameter type-id='type-id-145'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Curve::clamp() -->
+        <function-decl name='clamp' mangled-name='_ZN5Curve5clampEv' filepath='libnurbs/internals/curve.h' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Curve*' -->
+          <parameter type-id='type-id-145' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Curve::setstepsize(REAL) -->
+        <function-decl name='setstepsize' mangled-name='_ZN5Curve11setstepsizeEf' filepath='libnurbs/internals/curve.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Curve*' -->
+          <parameter type-id='type-id-145' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Curve::needsSamplingSubdivision() -->
+        <function-decl name='needsSamplingSubdivision' mangled-name='_ZN5Curve24needsSamplingSubdivisionEv' filepath='libnurbs/internals/curve.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Curve*' -->
+          <parameter type-id='type-id-145' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Curve::cullCheck() -->
+        <function-decl name='cullCheck' mangled-name='_ZN5Curve9cullCheckEv' filepath='libnurbs/internals/curve.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Curve*' -->
+          <parameter type-id='type-id-145' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Curve::getstepsize() -->
+        <function-decl name='getstepsize' mangled-name='_ZN5Curve11getstepsizeEv' filepath='libnurbs/internals/curve.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Curve*' -->
+          <parameter type-id='type-id-145' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- struct Knotvector -->
+    <class-decl name='Knotvector' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/knotvector.h' line='41' column='1' id='type-id-219'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- long int Knotvector::order -->
+        <var-decl name='order' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/knotvector.h' line='48' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- long int Knotvector::knotcount -->
+        <var-decl name='knotcount' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/knotvector.h' line='49' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- long int Knotvector::stride -->
+        <var-decl name='stride' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/knotvector.h' line='50' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- Knot* Knotvector::knotlist -->
+        <var-decl name='knotlist' type-id='type-id-220' visibility='default' filepath='libnurbs/internals/knotvector.h' line='51' column='1'/>
+      </data-member>
+      <member-function access='public' constructor='yes'>
+        <!-- Knotvector::Knotvector() -->
+        <function-decl name='Knotvector' filepath='libnurbs/internals/knotvector.h' line='42' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotvector*' -->
+          <parameter type-id='type-id-83' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' destructor='yes'>
+        <!-- Knotvector::~Knotvector(int) -->
+        <function-decl name='~Knotvector' filepath='libnurbs/internals/knotvector.h' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotvector*' -->
+          <parameter type-id='type-id-83' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Knotvector::validate() -->
+        <function-decl name='validate' mangled-name='_ZN10Knotvector8validateEv' filepath='libnurbs/internals/knotvector.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotvector*' -->
+          <parameter type-id='type-id-83' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotvector::show(const char*) -->
+        <function-decl name='show' mangled-name='_ZN10Knotvector4showEPKc' filepath='libnurbs/internals/knotvector.h' line='46' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotvector*' -->
+          <parameter type-id='type-id-83' is-artificial='yes'/>
+          <!-- parameter of type 'const char*' -->
+          <parameter type-id='type-id-84'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotvector::init(long int, long int, long int, float*) -->
+        <function-decl name='init' mangled-name='_ZN10Knotvector4initElllPf' filepath='libnurbs/internals/knotvector.h' line='44' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotvector*' -->
+          <parameter type-id='type-id-83' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- typedef REAL[5][5] Maxmatrix -->
-    <typedef-decl name='Maxmatrix' type-id='type-id-206' filepath='libnurbs/internals/mapdesc.h' line='45' column='1' id='type-id-179'/>
+    <typedef-decl name='Maxmatrix' type-id='type-id-214' filepath='libnurbs/internals/mapdesc.h' line='45' column='1' id='type-id-221'/>
     <!-- struct Mapdesc -->
-    <class-decl name='Mapdesc' size-in-bits='3392' is-struct='yes' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='49' column='1' id='type-id-136'>
+    <class-decl name='Mapdesc' size-in-bits='3392' is-struct='yes' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='49' column='1' id='type-id-222'>
       <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- REAL Mapdesc::pixel_tolerance -->
         <var-decl name='pixel_tolerance' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='104' column='1'/>
@@ -7474,43 +9188,43 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- REAL Mapdesc::bboxsize[5] -->
-        <var-decl name='bboxsize' type-id='type-id-178' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='112' column='1'/>
+        <var-decl name='bboxsize' type-id='type-id-212' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='112' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='448'>
         <!-- long int Mapdesc::type -->
-        <var-decl name='type' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='115' column='1'/>
+        <var-decl name='type' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='115' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='512'>
         <!-- int Mapdesc::isrational -->
-        <var-decl name='isrational' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='116' column='1'/>
+        <var-decl name='isrational' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='116' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='544'>
         <!-- int Mapdesc::ncoords -->
-        <var-decl name='ncoords' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='117' column='1'/>
+        <var-decl name='ncoords' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='117' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='576'>
         <!-- int Mapdesc::hcoords -->
-        <var-decl name='hcoords' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='118' column='1'/>
+        <var-decl name='hcoords' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='118' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='608'>
         <!-- int Mapdesc::inhcoords -->
-        <var-decl name='inhcoords' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='119' column='1'/>
+        <var-decl name='inhcoords' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='119' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='640'>
         <!-- int Mapdesc::mask -->
-        <var-decl name='mask' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='120' column='1'/>
+        <var-decl name='mask' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='120' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='672'>
         <!-- Maxmatrix Mapdesc::bmat -->
-        <var-decl name='bmat' type-id='type-id-179' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='121' column='1'/>
+        <var-decl name='bmat' type-id='type-id-221' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='121' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1472'>
         <!-- Maxmatrix Mapdesc::cmat -->
-        <var-decl name='cmat' type-id='type-id-179' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='122' column='1'/>
+        <var-decl name='cmat' type-id='type-id-221' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='122' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='2272'>
         <!-- Maxmatrix Mapdesc::smat -->
-        <var-decl name='smat' type-id='type-id-179' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='123' column='1'/>
+        <var-decl name='smat' type-id='type-id-221' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='123' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='3072'>
         <!-- REAL Mapdesc::s_steps -->
@@ -7534,94 +9248,829 @@
       </data-member>
       <data-member access='private' layout-offset-in-bits='3264'>
         <!-- Mapdesc* Mapdesc::next -->
-        <var-decl name='next' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='129' column='1'/>
+        <var-decl name='next' type-id='type-id-163' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='129' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='3328'>
         <!-- Backend& Mapdesc::backend -->
-        <var-decl name='backend' type-id='type-id-109' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='130' column='1'/>
+        <var-decl name='backend' type-id='type-id-167' visibility='default' filepath='libnurbs/internals/mapdesc.h' line='130' column='1'/>
       </data-member>
       <member-function access='public' constructor='yes'>
         <!-- Mapdesc::Mapdesc(long int, int, int, Backend&) -->
         <function-decl name='Mapdesc' filepath='libnurbs/internals/mapdesc.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Mapdesc*' -->
-          <parameter type-id='type-id-107' is-artificial='yes'/>
+          <parameter type-id='type-id-163' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-111'/>
+          <parameter type-id='type-id-167'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- struct Knotvector -->
-    <class-decl name='Knotvector' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/knotvector.h' line='41' column='1' id='type-id-292'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- long int Knotvector::order -->
-        <var-decl name='order' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/knotvector.h' line='48' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- long int Knotvector::knotcount -->
-        <var-decl name='knotcount' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/knotvector.h' line='49' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- long int Knotvector::stride -->
-        <var-decl name='stride' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/knotvector.h' line='50' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- Knot* Knotvector::knotlist -->
-        <var-decl name='knotlist' type-id='type-id-212' visibility='default' filepath='libnurbs/internals/knotvector.h' line='51' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Knotvector::Knotvector() -->
-        <function-decl name='Knotvector' filepath='libnurbs/internals/knotvector.h' line='42' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Knotvector*' -->
-          <parameter type-id='type-id-293' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
+      <member-function access='public'>
+        <!-- int Mapdesc::isParametricDistanceSampling() -->
+        <function-decl name='isParametricDistanceSampling' mangled-name='_ZN7Mapdesc28isParametricDistanceSamplingEv' filepath='libnurbs/internals/mapdesc.h' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
         </function-decl>
       </member-function>
-      <member-function access='public' destructor='yes'>
-        <!-- Knotvector::~Knotvector(int) -->
-        <function-decl name='~Knotvector' filepath='libnurbs/internals/knotvector.h' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Knotvector*' -->
-          <parameter type-id='type-id-293' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+      <member-function access='public'>
+        <!-- int Mapdesc::isPathLengthSampling() -->
+        <function-decl name='isPathLengthSampling' mangled-name='_ZN7Mapdesc20isPathLengthSamplingEv' filepath='libnurbs/internals/mapdesc.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::isSurfaceAreaSampling() -->
+        <function-decl name='isSurfaceAreaSampling' mangled-name='_ZN7Mapdesc21isSurfaceAreaSamplingEv' filepath='libnurbs/internals/mapdesc.h' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::isObjectSpaceParaSampling() -->
+        <function-decl name='isObjectSpaceParaSampling' mangled-name='_ZN7Mapdesc25isObjectSpaceParaSamplingEv' filepath='libnurbs/internals/mapdesc.h' line='62' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::isObjectSpacePathSampling() -->
+        <function-decl name='isObjectSpacePathSampling' mangled-name='_ZN7Mapdesc25isObjectSpacePathSamplingEv' filepath='libnurbs/internals/mapdesc.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::isConstantSampling() -->
+        <function-decl name='isConstantSampling' mangled-name='_ZN7Mapdesc18isConstantSamplingEv' filepath='libnurbs/internals/mapdesc.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::isDomainSampling() -->
+        <function-decl name='isDomainSampling' mangled-name='_ZN7Mapdesc16isDomainSamplingEv' filepath='libnurbs/internals/mapdesc.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::isRangeSampling() -->
+        <function-decl name='isRangeSampling' mangled-name='_ZN7Mapdesc15isRangeSamplingEv' filepath='libnurbs/internals/mapdesc.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::isCulling() -->
+        <function-decl name='isCulling' mangled-name='_ZN7Mapdesc9isCullingEv' filepath='libnurbs/internals/mapdesc.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mapdesc::xformCulling(REAL*, REAL*) -->
+        <function-decl name='xformCulling' mangled-name='_ZN7Mapdesc12xformCullingEPfS0_' filepath='libnurbs/internals/mapdesc.h' line='143' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::setBboxsize(float*) -->
+        <function-decl name='setBboxsize' mangled-name='_ZN7Mapdesc11setBboxsizeEPf' filepath='libnurbs/internals/mapdesc.h' line='97' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' static='yes'>
+        <!-- void Mapdesc::copy(long int, float*, long int, long int) -->
+        <function-decl name='copy' mangled-name='_ZN7Mapdesc4copyEPA5_flPfll' filepath='libnurbs/internals/mapdesc.h' line='134' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- parameter of type 'REAL[5]*' -->
+          <parameter type-id='type-id-223'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mapdesc::sumPt(REAL*, REAL*, REAL*, REAL, REAL) -->
+        <function-decl name='sumPt' mangled-name='_ZN7Mapdesc5sumPtEPfS0_S0_ff' filepath='libnurbs/internals/mapdesc.h' line='141' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mapdesc::xformRational(REAL[5]*, REAL*, REAL*) -->
+        <function-decl name='xformRational' mangled-name='_ZN7Mapdesc13xformRationalEPA5_fPfS2_' filepath='libnurbs/internals/mapdesc.h' line='144' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL[5]*' -->
+          <parameter type-id='type-id-223'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mapdesc::xformNonrational(REAL[5]*, REAL*, REAL*) -->
+        <function-decl name='xformNonrational' mangled-name='_ZN7Mapdesc16xformNonrationalEPA5_fPfS2_' filepath='libnurbs/internals/mapdesc.h' line='145' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL[5]*' -->
+          <parameter type-id='type-id-223'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::xformMat(REAL[5]*, REAL*, int, int, REAL*, int) -->
+        <function-decl name='xformMat' mangled-name='_ZN7Mapdesc8xformMatEPA5_fPfiiS2_i' filepath='libnurbs/internals/mapdesc.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL[5]*' -->
+          <parameter type-id='type-id-223'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::xformCulling(REAL*, int, int, REAL*, int) -->
+        <function-decl name='xformCulling' mangled-name='_ZN7Mapdesc12xformCullingEPfiiS0_i' filepath='libnurbs/internals/mapdesc.h' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::xformBounding(REAL*, int, int, REAL*, int) -->
+        <function-decl name='xformBounding' mangled-name='_ZN7Mapdesc13xformBoundingEPfiiS0_i' filepath='libnurbs/internals/mapdesc.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::xformSampling(REAL*, int, int, REAL*, int) -->
+        <function-decl name='xformSampling' mangled-name='_ZN7Mapdesc13xformSamplingEPfiiS0_i' filepath='libnurbs/internals/mapdesc.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::xformMat(REAL[5]*, REAL*, int, int, int, int, REAL*, int, int) -->
+        <function-decl name='xformMat' mangled-name='_ZN7Mapdesc8xformMatEPA5_fPfiiiiS2_ii' filepath='libnurbs/internals/mapdesc.h' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL[5]*' -->
+          <parameter type-id='type-id-223'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::xformBounding(REAL*, int, int, int, int, REAL*, int, int) -->
+        <function-decl name='xformBounding' mangled-name='_ZN7Mapdesc13xformBoundingEPfiiiiS0_ii' filepath='libnurbs/internals/mapdesc.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::xformSampling(REAL*, int, int, int, int, REAL*, int, int) -->
+        <function-decl name='xformSampling' mangled-name='_ZN7Mapdesc13xformSamplingEPfiiiiS0_ii' filepath='libnurbs/internals/mapdesc.h' line='87' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::xformCulling(REAL*, int, int, int, int, REAL*, int, int) -->
+        <function-decl name='xformCulling' mangled-name='_ZN7Mapdesc12xformCullingEPfiiiiS0_ii' filepath='libnurbs/internals/mapdesc.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::project(REAL*, int, int, REAL*, int, int, int, int) -->
+        <function-decl name='project' mangled-name='_ZN7Mapdesc7projectEPfiiS0_iiii' filepath='libnurbs/internals/mapdesc.h' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::project(REAL*, int, REAL*, int, int) -->
+        <function-decl name='project' mangled-name='_ZN7Mapdesc7projectEPfiS0_ii' filepath='libnurbs/internals/mapdesc.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mapdesc::bbox(REAL[5]*, REAL*, int, int, int, int) -->
+        <function-decl name='bbox' mangled-name='_ZN7Mapdesc4bboxEPA5_fPfiiii' filepath='libnurbs/internals/mapdesc.h' line='132' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL[5]*' -->
+          <parameter type-id='type-id-223'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::isProperty(long int) -->
+        <function-decl name='isProperty' mangled-name='_ZN7Mapdesc10isPropertyEl' filepath='libnurbs/internals/mapdesc.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::setProperty(long int, REAL) -->
+        <function-decl name='setProperty' mangled-name='_ZN7Mapdesc11setPropertyElf' filepath='libnurbs/internals/mapdesc.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- REAL Mapdesc::getProperty(long int) -->
+        <function-decl name='getProperty' mangled-name='_ZN7Mapdesc11getPropertyEl' filepath='libnurbs/internals/mapdesc.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- typedef REAL -->
+          <return type-id='type-id-1'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- unsigned int Mapdesc::clipbits(REAL*) -->
+        <function-decl name='clipbits' mangled-name='_ZN7Mapdesc8clipbitsEPf' filepath='libnurbs/internals/mapdesc.h' line='146' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- unsigned int -->
+          <return type-id='type-id-224'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::cullCheck(REAL*, int, int) -->
+        <function-decl name='cullCheck' mangled-name='_ZN7Mapdesc9cullCheckEPfii' filepath='libnurbs/internals/mapdesc.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::cullCheck(REAL*, int, int, int, int) -->
+        <function-decl name='cullCheck' mangled-name='_ZN7Mapdesc9cullCheckEPfiiii' filepath='libnurbs/internals/mapdesc.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::xformAndCullCheck(REAL*, int, int, int, int) -->
+        <function-decl name='xformAndCullCheck' mangled-name='_ZN7Mapdesc17xformAndCullCheckEPfiiii' filepath='libnurbs/internals/mapdesc.h' line='94' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- REAL Mapdesc::calcVelocityNonrational(REAL*, int, int) -->
+        <function-decl name='calcVelocityNonrational' mangled-name='_ZN7Mapdesc23calcVelocityNonrationalEPfii' filepath='libnurbs/internals/mapdesc.h' line='80' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- typedef REAL -->
+          <return type-id='type-id-1'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- REAL Mapdesc::calcVelocityRational(REAL*, int, int) -->
+        <function-decl name='calcVelocityRational' mangled-name='_ZN7Mapdesc20calcVelocityRationalEPfii' filepath='libnurbs/internals/mapdesc.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- typedef REAL -->
+          <return type-id='type-id-1'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::bboxTooBig(REAL*, int, int, int, int, REAL[5]*) -->
+        <function-decl name='bboxTooBig' mangled-name='_ZN7Mapdesc10bboxTooBigEPfiiiiPA5_f' filepath='libnurbs/internals/mapdesc.h' line='93' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'REAL[5]*' -->
+          <parameter type-id='type-id-223'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mapdesc::copyPt(REAL*, REAL*) -->
+        <function-decl name='copyPt' mangled-name='_ZN7Mapdesc6copyPtEPfS0_' filepath='libnurbs/internals/mapdesc.h' line='140' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::subdivide(REAL*, REAL*, REAL, int, int, int, int) -->
+        <function-decl name='subdivide' mangled-name='_ZN7Mapdesc9subdivideEPfS0_fiiii' filepath='libnurbs/internals/mapdesc.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::subdivide(REAL*, REAL*, REAL, int, int) -->
+        <function-decl name='subdivide' mangled-name='_ZN7Mapdesc9subdivideEPfS0_fii' filepath='libnurbs/internals/mapdesc.h' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::surfbbox(REAL[5]*) -->
+        <function-decl name='surfbbox' mangled-name='_ZN7Mapdesc8surfbboxEPA5_f' filepath='libnurbs/internals/mapdesc.h' line='91' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL[5]*' -->
+          <parameter type-id='type-id-223'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::identify(REAL[5]*) -->
+        <function-decl name='identify' mangled-name='_ZN7Mapdesc8identifyEPA5_f' filepath='libnurbs/internals/mapdesc.h' line='96' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL[5]*' -->
+          <parameter type-id='type-id-223'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- REAL Mapdesc::calcPartialVelocity(REAL*, REAL*, int, int, int, int, int, int, REAL, REAL, int) -->
+        <function-decl name='calcPartialVelocity' mangled-name='_ZN7Mapdesc19calcPartialVelocityEPfS0_iiiiiiffi' filepath='libnurbs/internals/mapdesc.h' line='89' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- typedef REAL -->
+          <return type-id='type-id-1'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- REAL Mapdesc::calcPartialVelocity(REAL*, int, int, int, REAL) -->
+        <function-decl name='calcPartialVelocity' mangled-name='_ZN7Mapdesc19calcPartialVelocityEPfiiif' filepath='libnurbs/internals/mapdesc.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- typedef REAL -->
+          <return type-id='type-id-1'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- long int Mapdesc::getType() -->
+        <function-decl name='getType' mangled-name='_ZN7Mapdesc7getTypeEv' filepath='libnurbs/internals/mapdesc.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- long int -->
+          <return type-id='type-id-38'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::isRational() -->
+        <function-decl name='isRational' mangled-name='_ZN7Mapdesc10isRationalEv' filepath='libnurbs/internals/mapdesc.h' line='101' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::setCmat(float*, long int, long int) -->
+        <function-decl name='setCmat' mangled-name='_ZN7Mapdesc7setCmatEPfll' filepath='libnurbs/internals/mapdesc.h' line='99' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::setSmat(float*, long int, long int) -->
+        <function-decl name='setSmat' mangled-name='_ZN7Mapdesc7setSmatEPfll' filepath='libnurbs/internals/mapdesc.h' line='100' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Mapdesc::setBmat(float*, long int, long int) -->
+        <function-decl name='setBmat' mangled-name='_ZN7Mapdesc7setBmatEPfll' filepath='libnurbs/internals/mapdesc.h' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::getNcoords() -->
+        <function-decl name='getNcoords' mangled-name='_ZN7Mapdesc10getNcoordsEv' filepath='libnurbs/internals/mapdesc.h' line='102' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- int Mapdesc::isBboxSubdividing() -->
+        <function-decl name='isBboxSubdividing' mangled-name='_ZN7Mapdesc17isBboxSubdividingEv' filepath='libnurbs/internals/mapdesc.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- struct Quiltspec -->
-    <class-decl name='Quiltspec' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/quilt.h' line='51' column='1' id='type-id-189'>
+    <class-decl name='Quiltspec' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/quilt.h' line='51' column='1' id='type-id-209'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- int Quiltspec::stride -->
-        <var-decl name='stride' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/quilt.h' line='52' column='1'/>
+        <var-decl name='stride' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/quilt.h' line='52' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
         <!-- int Quiltspec::width -->
-        <var-decl name='width' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/quilt.h' line='53' column='1'/>
+        <var-decl name='width' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/quilt.h' line='53' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- int Quiltspec::offset -->
-        <var-decl name='offset' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/quilt.h' line='54' column='1'/>
+        <var-decl name='offset' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/quilt.h' line='54' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='96'>
         <!-- int Quiltspec::order -->
-        <var-decl name='order' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/quilt.h' line='55' column='1'/>
+        <var-decl name='order' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/quilt.h' line='55' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- int Quiltspec::index -->
-        <var-decl name='index' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/quilt.h' line='56' column='1'/>
+        <var-decl name='index' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/quilt.h' line='56' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='160'>
         <!-- int Quiltspec::bdry[2] -->
-        <var-decl name='bdry' type-id='type-id-211' visibility='default' filepath='libnurbs/internals/quilt.h' line='57' column='1'/>
+        <var-decl name='bdry' type-id='type-id-216' visibility='default' filepath='libnurbs/internals/quilt.h' line='57' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='224'>
         <!-- REAL Quiltspec::step_size -->
@@ -7629,261 +10078,297 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- Knot* Quiltspec::breakpoints -->
-        <var-decl name='breakpoints' type-id='type-id-212' visibility='default' filepath='libnurbs/internals/quilt.h' line='59' column='1'/>
+        <var-decl name='breakpoints' type-id='type-id-220' visibility='default' filepath='libnurbs/internals/quilt.h' line='59' column='1'/>
       </data-member>
     </class-decl>
-    <!-- typedef REAL Knot -->
-    <typedef-decl name='Knot' type-id='type-id-1' filepath='libnurbs/internals/types.h' line='45' column='1' id='type-id-218'/>
     <!-- typedef Quiltspec* Quiltspec_ptr -->
-    <typedef-decl name='Quiltspec_ptr' type-id='type-id-207' filepath='libnurbs/internals/quilt.h' line='62' column='1' id='type-id-186'/>
+    <typedef-decl name='Quiltspec_ptr' type-id='type-id-225' filepath='libnurbs/internals/quilt.h' line='62' column='1' id='type-id-165'/>
+    <!-- typedef REAL Knot -->
+    <typedef-decl name='Knot' type-id='type-id-1' filepath='libnurbs/internals/types.h' line='45' column='1' id='type-id-226'/>
     <!-- Curve& -->
-    <reference-type-def kind='lvalue' type-id='type-id-265' size-in-bits='64' id='type-id-269'/>
+    <reference-type-def kind='lvalue' type-id='type-id-217' size-in-bits='64' id='type-id-218'/>
     <!-- Curve* -->
-    <pointer-type-def type-id='type-id-265' size-in-bits='64' id='type-id-247'/>
-    <!-- Curve* const -->
-    <qualified-type-def type-id='type-id-247' const='yes' id='type-id-294'/>
+    <pointer-type-def type-id='type-id-217' size-in-bits='64' id='type-id-145'/>
     <!-- Flist& -->
-    <reference-type-def kind='lvalue' type-id='type-id-126' size-in-bits='64' id='type-id-295'/>
+    <reference-type-def kind='lvalue' type-id='type-id-150' size-in-bits='64' id='type-id-166'/>
     <!-- Knot* -->
-    <pointer-type-def type-id='type-id-218' size-in-bits='64' id='type-id-212'/>
+    <pointer-type-def type-id='type-id-226' size-in-bits='64' id='type-id-220'/>
     <!-- Knotvector& -->
-    <reference-type-def kind='lvalue' type-id='type-id-292' size-in-bits='64' id='type-id-296'/>
+    <reference-type-def kind='lvalue' type-id='type-id-219' size-in-bits='64' id='type-id-168'/>
     <!-- Mapdesc* -->
-    <pointer-type-def type-id='type-id-136' size-in-bits='64' id='type-id-107'/>
-    <!-- Mapdesc* const -->
-    <qualified-type-def type-id='type-id-107' const='yes' id='type-id-297'/>
+    <pointer-type-def type-id='type-id-222' size-in-bits='64' id='type-id-163'/>
     <!-- Quiltspec* -->
-    <pointer-type-def type-id='type-id-189' size-in-bits='64' id='type-id-207'/>
+    <pointer-type-def type-id='type-id-209' size-in-bits='64' id='type-id-225'/>
     <!-- REAL[5]* -->
-    <pointer-type-def type-id='type-id-178' size-in-bits='64' id='type-id-298'/>
+    <pointer-type-def type-id='type-id-212' size-in-bits='64' id='type-id-223'/>
     <!-- float[4]* -->
-    <pointer-type-def type-id='type-id-291' size-in-bits='64' id='type-id-299'/>
-    <!-- Knotvector* -->
-    <pointer-type-def type-id='type-id-292' size-in-bits='64' id='type-id-293'/>
+    <pointer-type-def type-id='type-id-215' size-in-bits='64' id='type-id-227'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/curvelist.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- float[3] -->
-    <array-type-def dimensions='1' type-id='type-id-28' size-in-bits='96' id='type-id-248'>
+    <array-type-def dimensions='1' type-id='type-id-15' size-in-bits='96' id='type-id-146'>
       <!-- <anonymous range>[3] -->
-      <subrange length='3' type-id='type-id-3' id='type-id-68'/>
+      <subrange length='3' type-id='type-id-3' id='type-id-90'/>
     </array-type-def>
     <!-- Curvelist* -->
-    <pointer-type-def type-id='type-id-246' size-in-bits='64' id='type-id-249'/>
-    <!-- Curvelist* const -->
-    <qualified-type-def type-id='type-id-249' const='yes' id='type-id-300'/>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/curvesub.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- Curvelist& -->
-    <qualified-type-def type-id='type-id-250' id='type-id-301'/>
+    <pointer-type-def type-id='type-id-144' size-in-bits='64' id='type-id-147'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/displaylist.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
+    <!-- struct PFVS -->
+    <class-decl name='PFVS' size-in-bits='128' is-struct='yes' naming-typedef-id='type-id-228' visibility='default' filepath='libnurbs/internals/displaylist.h' line='46' column='1' id='type-id-229'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- void (NurbsTessellator*, void*)* PFVS::__pfn -->
+        <var-decl name='__pfn' type-id='type-id-230' visibility='default' filepath='libnurbs/internals/displaylist.h' line='46' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- long int PFVS::__delta -->
+        <var-decl name='__delta' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/displaylist.h' line='46' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef PFVS PFVS -->
+    <typedef-decl name='PFVS' type-id='type-id-229' filepath='libnurbs/internals/displaylist.h' line='46' column='1' id='type-id-228'/>
     <!-- struct Dlnode -->
-    <class-decl name='Dlnode' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/internals/displaylist.h' line='48' column='1' id='type-id-169'>
+    <class-decl name='Dlnode' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/internals/displaylist.h' line='48' column='1' id='type-id-231'>
       <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- PFVS Dlnode::work -->
-        <var-decl name='work' type-id='type-id-196' visibility='default' filepath='libnurbs/internals/displaylist.h' line='50' column='1'/>
+        <var-decl name='work' type-id='type-id-228' visibility='default' filepath='libnurbs/internals/displaylist.h' line='50' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- void* Dlnode::arg -->
-        <var-decl name='arg' type-id='type-id-25' visibility='default' filepath='libnurbs/internals/displaylist.h' line='51' column='1'/>
+        <var-decl name='arg' type-id='type-id-35' visibility='default' filepath='libnurbs/internals/displaylist.h' line='51' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- PFVS Dlnode::cleanup -->
-        <var-decl name='cleanup' type-id='type-id-196' visibility='default' filepath='libnurbs/internals/displaylist.h' line='52' column='1'/>
+        <var-decl name='cleanup' type-id='type-id-228' visibility='default' filepath='libnurbs/internals/displaylist.h' line='52' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- Dlnode* Dlnode::next -->
-        <var-decl name='next' type-id='type-id-152' visibility='default' filepath='libnurbs/internals/displaylist.h' line='53' column='1'/>
+        <var-decl name='next' type-id='type-id-232' visibility='default' filepath='libnurbs/internals/displaylist.h' line='53' column='1'/>
       </data-member>
       <member-function access='public' constructor='yes'>
         <!-- Dlnode::Dlnode(PFVS, void*, PFVS) -->
         <function-decl name='Dlnode' filepath='libnurbs/internals/displaylist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Dlnode*' -->
-          <parameter type-id='type-id-152' is-artificial='yes'/>
+          <parameter type-id='type-id-232' is-artificial='yes'/>
           <!-- parameter of type 'typedef PFVS' -->
-          <parameter type-id='type-id-196'/>
+          <parameter type-id='type-id-228'/>
           <!-- parameter of type 'void*' -->
-          <parameter type-id='type-id-25'/>
+          <parameter type-id='type-id-35'/>
           <!-- parameter of type 'typedef PFVS' -->
-          <parameter type-id='type-id-196'/>
+          <parameter type-id='type-id-228'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- typedef __anonymous_struct__ PFVS -->
-    <typedef-decl name='PFVS' type-id='type-id-217' filepath='libnurbs/internals/displaylist.h' line='46' column='1' id='type-id-196'/>
-    <!-- struct {void (NurbsTessellator*, void*)* __pfn; long int __delta;} -->
-    <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-196' visibility='default' filepath='libnurbs/internals/displaylist.h' line='46' column='1' id='type-id-217'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- void (NurbsTessellator*, void*)* __pfn -->
-        <var-decl name='__pfn' type-id='type-id-221' visibility='default' filepath='libnurbs/internals/displaylist.h' line='46' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- long int __delta -->
-        <var-decl name='__delta' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/displaylist.h' line='46' column='1'/>
-      </data-member>
-    </class-decl>
     <!-- class DisplayList -->
-    <class-decl name='DisplayList' size-in-bits='2688' visibility='default' filepath='libnurbs/internals/displaylist.h' line='65' column='1' id='type-id-94'>
+    <class-decl name='DisplayList' size-in-bits='2688' visibility='default' filepath='libnurbs/internals/displaylist.h' line='65' column='1' id='type-id-233'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- Dlnode* DisplayList::nodes -->
-        <var-decl name='nodes' type-id='type-id-152' visibility='default' filepath='libnurbs/internals/displaylist.h' line='73' column='1'/>
+        <var-decl name='nodes' type-id='type-id-232' visibility='default' filepath='libnurbs/internals/displaylist.h' line='73' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- Pool DisplayList::dlnodePool -->
-        <var-decl name='dlnodePool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/displaylist.h' line='74' column='1'/>
+        <var-decl name='dlnodePool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/displaylist.h' line='74' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='2560'>
         <!-- Dlnode** DisplayList::lastNode -->
-        <var-decl name='lastNode' type-id='type-id-153' visibility='default' filepath='libnurbs/internals/displaylist.h' line='75' column='1'/>
+        <var-decl name='lastNode' type-id='type-id-234' visibility='default' filepath='libnurbs/internals/displaylist.h' line='75' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='2624'>
         <!-- NurbsTessellator* DisplayList::nt -->
-        <var-decl name='nt' type-id='type-id-87' visibility='default' filepath='libnurbs/internals/displaylist.h' line='76' column='1'/>
+        <var-decl name='nt' type-id='type-id-78' visibility='default' filepath='libnurbs/internals/displaylist.h' line='76' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- DisplayList::DisplayList(NurbsTessellator*) -->
         <function-decl name='DisplayList' filepath='libnurbs/internals/displaylist.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'DisplayList*' -->
-          <parameter type-id='type-id-86' is-artificial='yes'/>
+          <parameter type-id='type-id-77' is-artificial='yes'/>
           <!-- parameter of type 'NurbsTessellator*' -->
-          <parameter type-id='type-id-87'/>
+          <parameter type-id='type-id-78'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- DisplayList::~DisplayList(int) -->
         <function-decl name='~DisplayList' filepath='libnurbs/internals/displaylist.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'DisplayList*' -->
-          <parameter type-id='type-id-86' is-artificial='yes'/>
+          <parameter type-id='type-id-77' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void DisplayList::play() -->
+        <function-decl name='play' mangled-name='_ZN11DisplayList4playEv' filepath='libnurbs/internals/displaylist.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'DisplayList*' -->
+          <parameter type-id='type-id-77' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void DisplayList::endList() -->
+        <function-decl name='endList' mangled-name='_ZN11DisplayList7endListEv' filepath='libnurbs/internals/displaylist.h' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'DisplayList*' -->
+          <parameter type-id='type-id-77' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void DisplayList::append(PFVS, void*, PFVS) -->
+        <function-decl name='append' mangled-name='_ZN11DisplayList6appendEM16NurbsTessellatorFvPvES1_S3_' filepath='libnurbs/internals/displaylist.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'DisplayList*' -->
+          <parameter type-id='type-id-77' is-artificial='yes'/>
+          <!-- parameter of type 'typedef PFVS' -->
+          <parameter type-id='type-id-228'/>
+          <!-- parameter of type 'void*' -->
+          <parameter type-id='type-id-35'/>
+          <!-- parameter of type 'typedef PFVS' -->
+          <parameter type-id='type-id-228'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- DisplayList* -->
-    <pointer-type-def type-id='type-id-94' size-in-bits='64' id='type-id-86'/>
-    <!-- DisplayList* const -->
-    <qualified-type-def type-id='type-id-86' const='yes' id='type-id-302'/>
+    <pointer-type-def type-id='type-id-233' size-in-bits='64' id='type-id-77'/>
     <!-- Dlnode* -->
-    <pointer-type-def type-id='type-id-169' size-in-bits='64' id='type-id-152'/>
+    <pointer-type-def type-id='type-id-231' size-in-bits='64' id='type-id-232'/>
     <!-- Dlnode** -->
-    <pointer-type-def type-id='type-id-152' size-in-bits='64' id='type-id-153'/>
+    <pointer-type-def type-id='type-id-232' size-in-bits='64' id='type-id-234'/>
     <!-- NurbsTessellator* -->
-    <pointer-type-def type-id='type-id-43' size-in-bits='64' id='type-id-87'/>
+    <pointer-type-def type-id='type-id-40' size-in-bits='64' id='type-id-78'/>
     <!-- void (NurbsTessellator*, void*)* -->
-    <pointer-type-def type-id='type-id-226' size-in-bits='64' id='type-id-221'/>
+    <pointer-type-def type-id='type-id-235' size-in-bits='64' id='type-id-230'/>
     <!-- void (NurbsTessellator*, void*) -->
-    <function-type size-in-bits='64' id='type-id-226'>
+    <function-type size-in-bits='64' id='type-id-235'>
       <!-- implicit parameter of type 'NurbsTessellator*' -->
-      <parameter type-id='type-id-87' is-artificial='yes'/>
+      <parameter type-id='type-id-78' is-artificial='yes'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-35'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-type>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/flist.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- Flist* const -->
-    <qualified-type-def type-id='type-id-155' const='yes' id='type-id-303'/>
     <!-- FlistSorter* -->
-    <pointer-type-def type-id='type-id-154' size-in-bits='64' id='type-id-177'/>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/flistsorter.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- FlistSorter* const -->
-    <qualified-type-def type-id='type-id-177' const='yes' id='type-id-304'/>
+    <pointer-type-def type-id='type-id-151' size-in-bits='64' id='type-id-154'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/hull.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- class Hull -->
-    <class-decl name='Hull' size-in-bits='4800' visibility='default' filepath='libnurbs/internals/hull.h' line='47' column='1' id='type-id-180'>
+    <class-decl name='Hull' size-in-bits='4800' visibility='default' filepath='libnurbs/internals/hull.h' line='47' column='1' id='type-id-236'>
       <!-- class TrimRegion -->
-      <base-class access='public' layout-offset-in-bits='192' is-virtual='yes' type-id='type-id-173'/>
+      <base-class access='public' layout-offset-in-bits='192' is-virtual='yes' type-id='type-id-197'/>
       <member-type access='private'>
         <!-- struct Hull::Side -->
-        <class-decl name='Side' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/hull.h' line='55' column='1' id='type-id-197'>
+        <class-decl name='Side' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/hull.h' line='55' column='1' id='type-id-237'>
           <data-member access='public' layout-offset-in-bits='0'>
             <!-- Trimline* Hull::Side::left -->
-            <var-decl name='left' type-id='type-id-198' visibility='default' filepath='libnurbs/internals/hull.h' line='56' column='1'/>
+            <var-decl name='left' type-id='type-id-205' visibility='default' filepath='libnurbs/internals/hull.h' line='56' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='64'>
             <!-- Gridline* Hull::Side::line -->
-            <var-decl name='line' type-id='type-id-199' visibility='default' filepath='libnurbs/internals/hull.h' line='57' column='1'/>
+            <var-decl name='line' type-id='type-id-238' visibility='default' filepath='libnurbs/internals/hull.h' line='57' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='128'>
             <!-- Trimline* Hull::Side::right -->
-            <var-decl name='right' type-id='type-id-198' visibility='default' filepath='libnurbs/internals/hull.h' line='58' column='1'/>
+            <var-decl name='right' type-id='type-id-205' visibility='default' filepath='libnurbs/internals/hull.h' line='58' column='1'/>
           </data-member>
           <data-member access='public' layout-offset-in-bits='192'>
             <!-- long int Hull::Side::index -->
-            <var-decl name='index' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/hull.h' line='59' column='1'/>
+            <var-decl name='index' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/hull.h' line='59' column='1'/>
           </data-member>
         </class-decl>
       </member-type>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- Hull::Side Hull::lower -->
-        <var-decl name='lower' type-id='type-id-197' visibility='default' filepath='libnurbs/internals/hull.h' line='62' column='1'/>
+        <var-decl name='lower' type-id='type-id-237' visibility='default' filepath='libnurbs/internals/hull.h' line='62' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='320'>
         <!-- Hull::Side Hull::upper -->
-        <var-decl name='upper' type-id='type-id-197' visibility='default' filepath='libnurbs/internals/hull.h' line='63' column='1'/>
+        <var-decl name='upper' type-id='type-id-237' visibility='default' filepath='libnurbs/internals/hull.h' line='63' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='576'>
         <!-- Trimline Hull::fakeleft -->
-        <var-decl name='fakeleft' type-id='type-id-200' visibility='default' filepath='libnurbs/internals/hull.h' line='64' column='1'/>
+        <var-decl name='fakeleft' type-id='type-id-204' visibility='default' filepath='libnurbs/internals/hull.h' line='64' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='1408'>
         <!-- Trimline Hull::fakeright -->
-        <var-decl name='fakeright' type-id='type-id-200' visibility='default' filepath='libnurbs/internals/hull.h' line='65' column='1'/>
+        <var-decl name='fakeright' type-id='type-id-204' visibility='default' filepath='libnurbs/internals/hull.h' line='65' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- Hull::Hull(int, void**) -->
         <function-decl name='Hull' filepath='libnurbs/internals/hull.cc' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Hull*' -->
-          <parameter type-id='type-id-201' is-artificial='yes'/>
+          <parameter type-id='type-id-239' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <parameter type-id='type-id-191' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- Hull::~Hull(int, void**) -->
         <function-decl name='~Hull' filepath='libnurbs/internals/hull.cc' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Hull*' -->
-          <parameter type-id='type-id-201' is-artificial='yes'/>
+          <parameter type-id='type-id-239' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <parameter type-id='type-id-191' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- GridTrimVertex* Hull::nextupper(GridTrimVertex*) -->
+        <function-decl name='nextupper' mangled-name='_ZN4Hull9nextupperEP14GridTrimVertex' filepath='libnurbs/internals/hull.cc' line='116' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Hull*' -->
+          <parameter type-id='type-id-239' is-artificial='yes'/>
+          <!-- parameter of type 'GridTrimVertex*' -->
+          <parameter type-id='type-id-141'/>
+          <!-- GridTrimVertex* -->
+          <return type-id='type-id-141'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- GridTrimVertex* Hull::nextlower(GridTrimVertex*) -->
+        <function-decl name='nextlower' mangled-name='_ZN4Hull9nextlowerEP14GridTrimVertex' filepath='libnurbs/internals/hull.cc' line='142' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Hull*' -->
+          <parameter type-id='type-id-239' is-artificial='yes'/>
+          <!-- parameter of type 'GridTrimVertex*' -->
+          <parameter type-id='type-id-141'/>
+          <!-- GridTrimVertex* -->
+          <return type-id='type-id-141'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Hull::init() -->
+        <function-decl name='init' mangled-name='_ZN4Hull4initEv' filepath='libnurbs/internals/hull.cc' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Hull*' -->
+          <parameter type-id='type-id-239' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- Gridline* -->
-    <pointer-type-def type-id='type-id-203' size-in-bits='64' id='type-id-199'/>
+    <pointer-type-def type-id='type-id-201' size-in-bits='64' id='type-id-238'/>
     <!-- Hull* -->
-    <pointer-type-def type-id='type-id-180' size-in-bits='64' id='type-id-201'/>
-    <!-- Hull* const -->
-    <qualified-type-def type-id='type-id-201' const='yes' id='type-id-305'/>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/intersect.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- Bin& -->
-    <qualified-type-def type-id='type-id-262' id='type-id-306'/>
+    <pointer-type-def type-id='type-id-236' size-in-bits='64' id='type-id-239'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/knotvector.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- Knotvector* -->
-    <pointer-type-def type-id='type-id-292' size-in-bits='64' id='type-id-293'/>
-    <!-- Knotvector* const -->
-    <qualified-type-def type-id='type-id-293' const='yes' id='type-id-307'/>
+    <pointer-type-def type-id='type-id-219' size-in-bits='64' id='type-id-83'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/mapdesc.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
   </abi-instr>
@@ -7891,580 +10376,1005 @@
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/maplist.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- class Maplist -->
-    <class-decl name='Maplist' size-in-bits='2688' visibility='default' filepath='libnurbs/internals/maplist.h' line='46' column='1' id='type-id-72'>
+    <class-decl name='Maplist' size-in-bits='2688' visibility='default' filepath='libnurbs/internals/maplist.h' line='46' column='1' id='type-id-63'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- Pool Maplist::mapdescPool -->
-        <var-decl name='mapdescPool' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/maplist.h' line='58' column='1'/>
+        <var-decl name='mapdescPool' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/maplist.h' line='58' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='2496'>
         <!-- Mapdesc* Maplist::maps -->
-        <var-decl name='maps' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/maplist.h' line='59' column='1'/>
+        <var-decl name='maps' type-id='type-id-163' visibility='default' filepath='libnurbs/internals/maplist.h' line='59' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='2560'>
         <!-- Mapdesc** Maplist::lastmap -->
-        <var-decl name='lastmap' type-id='type-id-108' visibility='default' filepath='libnurbs/internals/maplist.h' line='60' column='1'/>
+        <var-decl name='lastmap' type-id='type-id-240' visibility='default' filepath='libnurbs/internals/maplist.h' line='60' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='2624'>
         <!-- Backend& Maplist::backend -->
-        <var-decl name='backend' type-id='type-id-109' visibility='default' filepath='libnurbs/internals/maplist.h' line='61' column='1'/>
+        <var-decl name='backend' type-id='type-id-167' visibility='default' filepath='libnurbs/internals/maplist.h' line='61' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- Maplist::Maplist(Backend&) -->
         <function-decl name='Maplist' filepath='libnurbs/internals/maplist.h' line='48' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Maplist*' -->
-          <parameter type-id='type-id-110' is-artificial='yes'/>
+          <parameter type-id='type-id-241' is-artificial='yes'/>
           <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-111'/>
+          <parameter type-id='type-id-167'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Mapdesc* Maplist::locate(long int) -->
+        <function-decl name='locate' mangled-name='_ZN7Maplist6locateEl' filepath='libnurbs/internals/maplist.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Maplist*' -->
+          <parameter type-id='type-id-241' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- Mapdesc* -->
+          <return type-id='type-id-163'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Maplist::define(long int, int, int) -->
+        <function-decl name='define' mangled-name='_ZN7Maplist6defineElii' filepath='libnurbs/internals/maplist.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Maplist*' -->
+          <parameter type-id='type-id-241' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Mapdesc* Maplist::find(long int) -->
+        <function-decl name='find' mangled-name='_ZN7Maplist4findEl' filepath='libnurbs/internals/maplist.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Maplist*' -->
+          <parameter type-id='type-id-241' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- Mapdesc* -->
+          <return type-id='type-id-163'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Maplist::freeMaps() -->
+        <function-decl name='freeMaps' mangled-name='_ZN7Maplist8freeMapsEv' filepath='libnurbs/internals/maplist.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Maplist*' -->
+          <parameter type-id='type-id-241' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Maplist::remove(Mapdesc*) -->
+        <function-decl name='remove' mangled-name='_ZN7Maplist6removeEP7Mapdesc' filepath='libnurbs/internals/maplist.h' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Maplist*' -->
+          <parameter type-id='type-id-241' is-artificial='yes'/>
+          <!-- parameter of type 'Mapdesc*' -->
+          <parameter type-id='type-id-163'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Maplist::add(long int, int, int) -->
+        <function-decl name='add' mangled-name='_ZN7Maplist3addElii' filepath='libnurbs/internals/maplist.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Maplist*' -->
+          <parameter type-id='type-id-241' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Maplist::initialize() -->
+        <function-decl name='initialize' mangled-name='_ZN7Maplist10initializeEv' filepath='libnurbs/internals/maplist.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Maplist*' -->
+          <parameter type-id='type-id-241' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- Mapdesc** -->
-    <pointer-type-def type-id='type-id-107' size-in-bits='64' id='type-id-108'/>
+    <pointer-type-def type-id='type-id-163' size-in-bits='64' id='type-id-240'/>
     <!-- Maplist* -->
-    <pointer-type-def type-id='type-id-72' size-in-bits='64' id='type-id-110'/>
-    <!-- Maplist* const -->
-    <qualified-type-def type-id='type-id-110' const='yes' id='type-id-308'/>
-    <!-- PooledObj* const -->
-    <qualified-type-def type-id='type-id-241' const='yes' id='type-id-309'/>
+    <pointer-type-def type-id='type-id-63' size-in-bits='64' id='type-id-241'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/mesher.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- GridTrimVertex*[2] -->
-    <array-type-def dimensions='1' type-id='type-id-188' size-in-bits='128' id='type-id-183'>
+    <array-type-def dimensions='1' type-id='type-id-141' size-in-bits='128' id='type-id-242'>
       <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
+      <subrange length='2' type-id='type-id-3' id='type-id-87'/>
     </array-type-def>
     <!-- class Mesher -->
-    <class-decl name='Mesher' size-in-bits='7680' visibility='default' filepath='libnurbs/internals/mesher.h' line='47' column='1' id='type-id-161'>
+    <class-decl name='Mesher' size-in-bits='7680' visibility='default' filepath='libnurbs/internals/mesher.h' line='47' column='1' id='type-id-189'>
       <!-- class TrimRegion -->
-      <base-class access='public' layout-offset-in-bits='192' is-virtual='yes' type-id='type-id-173'/>
+      <base-class access='public' layout-offset-in-bits='192' is-virtual='yes' type-id='type-id-197'/>
       <!-- class Hull -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-180'/>
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-236'/>
       <data-member access='private' static='yes'>
         <!-- static const float Mesher::ZERO -->
-        <var-decl name='ZERO' type-id='type-id-181' mangled-name='_ZN6Mesher4ZEROE' visibility='default' filepath='libnurbs/internals/mesher.cc' line='53' column='1'/>
+        <var-decl name='ZERO' type-id='type-id-243' mangled-name='_ZN6Mesher4ZEROE' visibility='default' filepath='libnurbs/internals/mesher.cc' line='53' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='2240'>
         <!-- Backend& Mesher::backend -->
-        <var-decl name='backend' type-id='type-id-109' visibility='default' filepath='libnurbs/internals/mesher.h' line='56' column='1'/>
+        <var-decl name='backend' type-id='type-id-167' visibility='default' filepath='libnurbs/internals/mesher.h' line='56' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='2304'>
         <!-- Pool Mesher::p -->
-        <var-decl name='p' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/mesher.h' line='58' column='1'/>
+        <var-decl name='p' type-id='type-id-67' visibility='default' filepath='libnurbs/internals/mesher.h' line='58' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='4800'>
         <!-- unsigned int Mesher::stacksize -->
-        <var-decl name='stacksize' type-id='type-id-92' visibility='default' filepath='libnurbs/internals/mesher.h' line='59' column='1'/>
+        <var-decl name='stacksize' type-id='type-id-224' visibility='default' filepath='libnurbs/internals/mesher.h' line='59' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='4864'>
         <!-- GridTrimVertex** Mesher::vdata -->
-        <var-decl name='vdata' type-id='type-id-182' visibility='default' filepath='libnurbs/internals/mesher.h' line='60' column='1'/>
+        <var-decl name='vdata' type-id='type-id-244' visibility='default' filepath='libnurbs/internals/mesher.h' line='60' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='4928'>
         <!-- GridTrimVertex* Mesher::last[2] -->
-        <var-decl name='last' type-id='type-id-183' visibility='default' filepath='libnurbs/internals/mesher.h' line='61' column='1'/>
+        <var-decl name='last' type-id='type-id-242' visibility='default' filepath='libnurbs/internals/mesher.h' line='61' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='5056'>
         <!-- int Mesher::itop -->
-        <var-decl name='itop' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mesher.h' line='62' column='1'/>
+        <var-decl name='itop' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/mesher.h' line='62' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='5088'>
         <!-- int Mesher::lastedge -->
-        <var-decl name='lastedge' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/mesher.h' line='63' column='1'/>
+        <var-decl name='lastedge' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/mesher.h' line='63' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- Mesher::Mesher(int, void**, Backend&) -->
         <function-decl name='Mesher' filepath='libnurbs/internals/mesher.cc' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Mesher*' -->
-          <parameter type-id='type-id-184' is-artificial='yes'/>
+          <parameter type-id='type-id-245' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <parameter type-id='type-id-191' is-artificial='yes'/>
           <!-- parameter of type 'Backend&' -->
-          <parameter type-id='type-id-111'/>
+          <parameter type-id='type-id-167'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- Mesher::~Mesher(int, void**) -->
         <function-decl name='~Mesher' filepath='libnurbs/internals/mesher.cc' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Mesher*' -->
-          <parameter type-id='type-id-184' is-artificial='yes'/>
+          <parameter type-id='type-id-245' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- artificial parameter of type 'void**' -->
-          <parameter type-id='type-id-163' is-artificial='yes'/>
+          <parameter type-id='type-id-191' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Mesher::equal(int, int) -->
+        <function-decl name='equal' mangled-name='_ZN6Mesher5equalEii' filepath='libnurbs/internals/mesher.cc' line='240' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::swapMesh() -->
+        <function-decl name='swapMesh' mangled-name='_ZN6Mesher8swapMeshEv' filepath='libnurbs/internals/mesher.cc' line='108' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::copy(int, int) -->
+        <function-decl name='copy' mangled-name='_ZN6Mesher4copyEii' filepath='libnurbs/internals/mesher.cc' line='246' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::closeMesh() -->
+        <function-decl name='closeMesh' mangled-name='_ZN6Mesher9closeMeshEv' filepath='libnurbs/internals/mesher.cc' line='102' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::openMesh() -->
+        <function-decl name='openMesh' mangled-name='_ZN6Mesher8openMeshEv' filepath='libnurbs/internals/mesher.cc' line='96' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::move(int, int) -->
+        <function-decl name='move' mangled-name='_ZN6Mesher4moveEii' filepath='libnurbs/internals/mesher.cc' line='252' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Mesher::isCw(int) -->
+        <function-decl name='isCw' mangled-name='_ZN6Mesher4isCwEi' filepath='libnurbs/internals/mesher.cc' line='233' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Mesher::isCcw(int) -->
+        <function-decl name='isCcw' mangled-name='_ZN6Mesher5isCcwEi' filepath='libnurbs/internals/mesher.cc' line='226' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::push(GridTrimVertex*) -->
+        <function-decl name='push' mangled-name='_ZN6Mesher4pushEP14GridTrimVertex' filepath='libnurbs/internals/mesher.cc' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- parameter of type 'GridTrimVertex*' -->
+          <parameter type-id='type-id-141'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::clearStack() -->
+        <function-decl name='clearStack' mangled-name='_ZN6Mesher10clearStackEv' filepath='libnurbs/internals/mesher.cc' line='114' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::init(unsigned int) -->
+        <function-decl name='init' mangled-name='_ZN6Mesher4initEj' filepath='libnurbs/internals/mesher.cc' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- parameter of type 'unsigned int' -->
+          <parameter type-id='type-id-224'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::output(int) -->
+        <function-decl name='output' mangled-name='_ZN6Mesher6outputEi' filepath='libnurbs/internals/mesher.cc' line='258' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::addLast() -->
+        <function-decl name='addLast' mangled-name='_ZN6Mesher7addLastEv' filepath='libnurbs/internals/mesher.cc' line='277' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::addLower() -->
+        <function-decl name='addLower' mangled-name='_ZN6Mesher8addLowerEv' filepath='libnurbs/internals/mesher.cc' line='415' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::finishLower(GridTrimVertex*) -->
+        <function-decl name='finishLower' mangled-name='_ZN6Mesher11finishLowerEP14GridTrimVertex' filepath='libnurbs/internals/mesher.cc' line='121' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- parameter of type 'GridTrimVertex*' -->
+          <parameter type-id='type-id-141'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::addUpper() -->
+        <function-decl name='addUpper' mangled-name='_ZN6Mesher8addUpperEv' filepath='libnurbs/internals/mesher.cc' line='341' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::finishUpper(GridTrimVertex*) -->
+        <function-decl name='finishUpper' mangled-name='_ZN6Mesher11finishUpperEP14GridTrimVertex' filepath='libnurbs/internals/mesher.cc' line='131' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- parameter of type 'GridTrimVertex*' -->
+          <parameter type-id='type-id-141'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Mesher::mesh() -->
+        <function-decl name='mesh' mangled-name='_ZN6Mesher4meshEv' filepath='libnurbs/internals/mesher.cc' line='141' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Mesher*' -->
+          <parameter type-id='type-id-245' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- GridTrimVertex** -->
-    <pointer-type-def type-id='type-id-188' size-in-bits='64' id='type-id-182'/>
+    <pointer-type-def type-id='type-id-141' size-in-bits='64' id='type-id-244'/>
     <!-- Mesher* -->
-    <pointer-type-def type-id='type-id-161' size-in-bits='64' id='type-id-184'/>
-    <!-- Mesher* const -->
-    <qualified-type-def type-id='type-id-184' const='yes' id='type-id-310'/>
+    <pointer-type-def type-id='type-id-189' size-in-bits='64' id='type-id-245'/>
     <!-- const float -->
-    <qualified-type-def type-id='type-id-28' const='yes' id='type-id-181'/>
+    <qualified-type-def type-id='type-id-15' const='yes' id='type-id-243'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/monoTriangulationBackend.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- Real[2] -->
-    <array-type-def dimensions='1' type-id='type-id-311' size-in-bits='64' id='type-id-312'>
+    <array-type-def dimensions='1' type-id='type-id-246' size-in-bits='64' id='type-id-247'>
       <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
+      <subrange length='2' type-id='type-id-3' id='type-id-87'/>
     </array-type-def>
     <!-- typedef float Real -->
-    <typedef-decl name='Real' type-id='type-id-28' filepath='libnurbs/nurbtess/definitions.h' line='36' column='1' id='type-id-311'/>
+    <typedef-decl name='Real' type-id='type-id-15' filepath='libnurbs/nurbtess/definitions.h' line='36' column='1' id='type-id-246'/>
     <!-- typedef int Int -->
-    <typedef-decl name='Int' type-id='type-id-11' filepath='libnurbs/nurbtess/definitions.h' line='37' column='1' id='type-id-313'/>
-    <!-- class vertexArray -->
-    <class-decl name='vertexArray' size-in-bits='128' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='77' column='1' id='type-id-314'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Real** vertexArray::array -->
-        <var-decl name='array' type-id='type-id-315' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='78' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Int vertexArray::index -->
-        <var-decl name='index' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='79' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='96'>
-        <!-- Int vertexArray::size -->
-        <var-decl name='size' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='80' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- vertexArray::vertexArray(Int) -->
-        <function-decl name='vertexArray' filepath='libnurbs/nurbtess/monoTriangulation.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'vertexArray*' -->
-          <parameter type-id='type-id-316' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- vertexArray::vertexArray(Real[2]*, Int) -->
-        <function-decl name='vertexArray' filepath='libnurbs/nurbtess/monoTriangulation.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'vertexArray*' -->
-          <parameter type-id='type-id-316' is-artificial='yes'/>
-          <!-- parameter of type 'Real[2]*' -->
-          <parameter type-id='type-id-317'/>
-          <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- vertexArray::~vertexArray(int) -->
-        <function-decl name='~vertexArray' filepath='libnurbs/nurbtess/monoTriangulation.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'vertexArray*' -->
-          <parameter type-id='type-id-316' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
+    <typedef-decl name='Int' type-id='type-id-8' filepath='libnurbs/nurbtess/definitions.h' line='37' column='1' id='type-id-248'/>
+    <!-- typedef Real[2] Real2 -->
+    <typedef-decl name='Real2' type-id='type-id-247' filepath='libnurbs/nurbtess/definitions.h' line='38' column='1' id='type-id-249'/>
     <!-- class reflexChain -->
-    <class-decl name='reflexChain' size-in-bits='192' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='43' column='1' id='type-id-318'>
+    <class-decl name='reflexChain' size-in-bits='192' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='43' column='1' id='type-id-250'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- Real2* reflexChain::queue -->
-        <var-decl name='queue' type-id='type-id-319' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='44' column='1'/>
+        <var-decl name='queue' type-id='type-id-251' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='44' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- Int reflexChain::isIncreasing -->
-        <var-decl name='isIncreasing' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='50' column='1'/>
+        <var-decl name='isIncreasing' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='50' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='96'>
         <!-- Int reflexChain::index_queue -->
-        <var-decl name='index_queue' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='51' column='1'/>
+        <var-decl name='index_queue' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='51' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
         <!-- Int reflexChain::size_queue -->
-        <var-decl name='size_queue' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='52' column='1'/>
+        <var-decl name='size_queue' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='52' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- reflexChain::reflexChain(Int, Int) -->
         <function-decl name='reflexChain' filepath='libnurbs/nurbtess/monoTriangulation.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'reflexChain*' -->
-          <parameter type-id='type-id-320' is-artificial='yes'/>
+          <parameter type-id='type-id-252' is-artificial='yes'/>
           <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
+          <parameter type-id='type-id-248'/>
           <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
+          <parameter type-id='type-id-248'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- reflexChain::~reflexChain(int) -->
         <function-decl name='~reflexChain' filepath='libnurbs/nurbtess/monoTriangulation.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'reflexChain*' -->
-          <parameter type-id='type-id-320' is-artificial='yes'/>
+          <parameter type-id='type-id-252' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void reflexChain::processNewVertex(Real*, Backend*) -->
+        <function-decl name='processNewVertex' mangled-name='_ZN11reflexChain16processNewVertexEPfP7Backend' filepath='libnurbs/nurbtess/monoTriangulation.h' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'reflexChain*' -->
+          <parameter type-id='type-id-252' is-artificial='yes'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void reflexChain::outputFan(Real*, Backend*) -->
+        <function-decl name='outputFan' mangled-name='_ZN11reflexChain9outputFanEPfP7Backend' filepath='libnurbs/nurbtess/monoTriangulation.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'reflexChain*' -->
+          <parameter type-id='type-id-252' is-artificial='yes'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- parameter of type 'Backend*' -->
+          <parameter type-id='type-id-139'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void reflexChain::print() -->
+        <function-decl name='print' mangled-name='_ZN11reflexChain5printEv' filepath='libnurbs/nurbtess/monoTriangulation.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'reflexChain*' -->
+          <parameter type-id='type-id-252' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void reflexChain::insert(Real, Real) -->
+        <function-decl name='insert' mangled-name='_ZN11reflexChain6insertEff' filepath='libnurbs/nurbtess/monoTriangulation.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'reflexChain*' -->
+          <parameter type-id='type-id-252' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void reflexChain::insert(Real*) -->
+        <function-decl name='insert' mangled-name='_ZN11reflexChain6insertEPf' filepath='libnurbs/nurbtess/monoTriangulation.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'reflexChain*' -->
+          <parameter type-id='type-id-252' is-artificial='yes'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void reflexChain::outputFan(Real*, primStream*) -->
+        <function-decl name='outputFan' mangled-name='_ZN11reflexChain9outputFanEPfP10primStream' filepath='libnurbs/nurbtess/monoTriangulation.h' line='62' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'reflexChain*' -->
+          <parameter type-id='type-id-252' is-artificial='yes'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void reflexChain::processNewVertex(Real*, primStream*) -->
+        <function-decl name='processNewVertex' mangled-name='_ZN11reflexChain16processNewVertexEPfP10primStream' filepath='libnurbs/nurbtess/monoTriangulation.h' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'reflexChain*' -->
+          <parameter type-id='type-id-252' is-artificial='yes'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- typedef Real[2] Real2 -->
-    <typedef-decl name='Real2' type-id='type-id-312' filepath='libnurbs/nurbtess/definitions.h' line='38' column='1' id='type-id-321'/>
+    <!-- class vertexArray -->
+    <class-decl name='vertexArray' size-in-bits='128' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='77' column='1' id='type-id-254'>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- Real** vertexArray::array -->
+        <var-decl name='array' type-id='type-id-255' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='78' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='64'>
+        <!-- Int vertexArray::index -->
+        <var-decl name='index' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='79' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='96'>
+        <!-- Int vertexArray::size -->
+        <var-decl name='size' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/monoTriangulation.h' line='80' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- vertexArray::vertexArray(Int) -->
+        <function-decl name='vertexArray' filepath='libnurbs/nurbtess/monoTriangulation.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' constructor='yes'>
+        <!-- vertexArray::vertexArray(Real[2]*, Int) -->
+        <function-decl name='vertexArray' filepath='libnurbs/nurbtess/monoTriangulation.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- parameter of type 'Real[2]*' -->
+          <parameter type-id='type-id-257'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes'>
+        <!-- vertexArray::~vertexArray(int) -->
+        <function-decl name='~vertexArray' filepath='libnurbs/nurbtess/monoTriangulation.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int vertexArray::getNumElements() -->
+        <function-decl name='getNumElements' mangled-name='_ZN11vertexArray14getNumElementsEv' filepath='libnurbs/nurbtess/monoTriangulation.h' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real** vertexArray::getArray() -->
+        <function-decl name='getArray' mangled-name='_ZN11vertexArray8getArrayEv' filepath='libnurbs/nurbtess/monoTriangulation.h' line='87' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- Real** -->
+          <return type-id='type-id-255'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real* vertexArray::getVertex(Int) -->
+        <function-decl name='getVertex' mangled-name='_ZN11vertexArray9getVertexEi' filepath='libnurbs/nurbtess/monoTriangulation.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- Real* -->
+          <return type-id='type-id-253'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int vertexArray::findIndexAbove(Real) -->
+        <function-decl name='findIndexAbove' mangled-name='_ZN11vertexArray14findIndexAboveEf' filepath='libnurbs/nurbtess/monoTriangulation.h' line='89' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int vertexArray::findIndexBelowGen(Real, Int, Int) -->
+        <function-decl name='findIndexBelowGen' mangled-name='_ZN11vertexArray17findIndexBelowGenEfii' filepath='libnurbs/nurbtess/monoTriangulation.h' line='91' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int vertexArray::findIndexStrictBelowGen(Real, Int, Int) -->
+        <function-decl name='findIndexStrictBelowGen' mangled-name='_ZN11vertexArray23findIndexStrictBelowGenEfii' filepath='libnurbs/nurbtess/monoTriangulation.h' line='92' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int vertexArray::findIndexFirstAboveEqualGen(Real, Int, Int) -->
+        <function-decl name='findIndexFirstAboveEqualGen' mangled-name='_ZN11vertexArray27findIndexFirstAboveEqualGenEfii' filepath='libnurbs/nurbtess/monoTriangulation.h' line='93' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int vertexArray::findIndexAboveGen(Real, Int, Int) -->
+        <function-decl name='findIndexAboveGen' mangled-name='_ZN11vertexArray17findIndexAboveGenEfii' filepath='libnurbs/nurbtess/monoTriangulation.h' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int vertexArray::findDecreaseChainFromEnd(Int, Int) -->
+        <function-decl name='findDecreaseChainFromEnd' mangled-name='_ZN11vertexArray24findDecreaseChainFromEndEii' filepath='libnurbs/nurbtess/monoTriangulation.h' line='96' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int vertexArray::skipEqualityFromStart(Real, Int, Int) -->
+        <function-decl name='skipEqualityFromStart' mangled-name='_ZN11vertexArray21skipEqualityFromStartEfii' filepath='libnurbs/nurbtess/monoTriangulation.h' line='94' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void vertexArray::print() -->
+        <function-decl name='print' mangled-name='_ZN11vertexArray5printEv' filepath='libnurbs/nurbtess/monoTriangulation.h' line='97' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void vertexArray::appendVertex(Real*) -->
+        <function-decl name='appendVertex' mangled-name='_ZN11vertexArray12appendVertexEPf' filepath='libnurbs/nurbtess/monoTriangulation.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'vertexArray*' -->
+          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
     <!-- class primStream -->
-    <class-decl name='primStream' size-in-bits='384' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='44' column='1' id='type-id-322'>
+    <class-decl name='primStream' size-in-bits='384' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='44' column='1' id='type-id-258'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- Int* primStream::lengths -->
-        <var-decl name='lengths' type-id='type-id-323' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='45' column='1'/>
+        <var-decl name='lengths' type-id='type-id-259' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='45' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- Int* primStream::types -->
-        <var-decl name='types' type-id='type-id-323' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='46' column='1'/>
+        <var-decl name='types' type-id='type-id-259' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='46' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
         <!-- Real* primStream::vertices -->
-        <var-decl name='vertices' type-id='type-id-324' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='47' column='1'/>
+        <var-decl name='vertices' type-id='type-id-253' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='47' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='192'>
         <!-- Int primStream::index_lengths -->
-        <var-decl name='index_lengths' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='50' column='1'/>
+        <var-decl name='index_lengths' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='50' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='224'>
         <!-- Int primStream::size_lengths -->
-        <var-decl name='size_lengths' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='51' column='1'/>
+        <var-decl name='size_lengths' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='51' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='256'>
         <!-- Int primStream::index_vertices -->
-        <var-decl name='index_vertices' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='52' column='1'/>
+        <var-decl name='index_vertices' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='52' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='288'>
         <!-- Int primStream::size_vertices -->
-        <var-decl name='size_vertices' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='53' column='1'/>
+        <var-decl name='size_vertices' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='53' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='320'>
         <!-- Int primStream::counter -->
-        <var-decl name='counter' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='59' column='1'/>
+        <var-decl name='counter' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/primitiveStream.h' line='59' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- primStream::primStream(Int, Int) -->
         <function-decl name='primStream' filepath='libnurbs/nurbtess/primitiveStream.h' line='62' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'primStream*' -->
-          <parameter type-id='type-id-325' is-artificial='yes'/>
+          <parameter type-id='type-id-194' is-artificial='yes'/>
           <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
+          <parameter type-id='type-id-248'/>
           <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
+          <parameter type-id='type-id-248'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- primStream::~primStream(int) -->
         <function-decl name='~primStream' filepath='libnurbs/nurbtess/primitiveStream.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'primStream*' -->
-          <parameter type-id='type-id-325' is-artificial='yes'/>
+          <parameter type-id='type-id-194' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real* primStream::get_vertices() -->
+        <function-decl name='get_vertices' mangled-name='_ZN10primStream12get_verticesEv' filepath='libnurbs/nurbtess/primitiveStream.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <!-- Real* -->
+          <return type-id='type-id-253'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int primStream::get_type(Int) -->
+        <function-decl name='get_type' mangled-name='_ZN10primStream8get_typeEi' filepath='libnurbs/nurbtess/primitiveStream.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int primStream::get_length(Int) -->
+        <function-decl name='get_length' mangled-name='_ZN10primStream10get_lengthEi' filepath='libnurbs/nurbtess/primitiveStream.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int primStream::get_n_prims() -->
+        <function-decl name='get_n_prims' mangled-name='_ZN10primStream11get_n_primsEv' filepath='libnurbs/nurbtess/primitiveStream.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void primStream::insert(Real*) -->
+        <function-decl name='insert' mangled-name='_ZN10primStream6insertEPf' filepath='libnurbs/nurbtess/primitiveStream.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void primStream::triangle(Real*, Real*, Real*) -->
+        <function-decl name='triangle' mangled-name='_ZN10primStream8triangleEPfS0_S0_' filepath='libnurbs/nurbtess/primitiveStream.h' line='89' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int primStream::num_triangles() -->
+        <function-decl name='num_triangles' mangled-name='_ZN10primStream13num_trianglesEv' filepath='libnurbs/nurbtess/primitiveStream.h' line='87' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void primStream::begin() -->
+        <function-decl name='begin' mangled-name='_ZN10primStream5beginEv' filepath='libnurbs/nurbtess/primitiveStream.h' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void primStream::draw() -->
+        <function-decl name='draw' mangled-name='_ZN10primStream4drawEv' filepath='libnurbs/nurbtess/primitiveStream.h' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void primStream::end(Int) -->
+        <function-decl name='end' mangled-name='_ZN10primStream3endEi' filepath='libnurbs/nurbtess/primitiveStream.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void primStream::insert(Real, Real) -->
+        <function-decl name='insert' mangled-name='_ZN10primStream6insertEff' filepath='libnurbs/nurbtess/primitiveStream.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void primStream::print() -->
+        <function-decl name='print' mangled-name='_ZN10primStream5printEv' filepath='libnurbs/nurbtess/primitiveStream.h' line='97' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- Int* -->
-    <pointer-type-def type-id='type-id-313' size-in-bits='64' id='type-id-323'/>
+    <pointer-type-def type-id='type-id-248' size-in-bits='64' id='type-id-259'/>
     <!-- Real* -->
-    <pointer-type-def type-id='type-id-311' size-in-bits='64' id='type-id-324'/>
+    <pointer-type-def type-id='type-id-246' size-in-bits='64' id='type-id-253'/>
     <!-- Real** -->
-    <pointer-type-def type-id='type-id-324' size-in-bits='64' id='type-id-315'/>
+    <pointer-type-def type-id='type-id-253' size-in-bits='64' id='type-id-255'/>
     <!-- Real2* -->
-    <pointer-type-def type-id='type-id-321' size-in-bits='64' id='type-id-319'/>
+    <pointer-type-def type-id='type-id-249' size-in-bits='64' id='type-id-251'/>
     <!-- Real[2]* -->
-    <pointer-type-def type-id='type-id-312' size-in-bits='64' id='type-id-317'/>
+    <pointer-type-def type-id='type-id-247' size-in-bits='64' id='type-id-257'/>
     <!-- primStream* -->
-    <pointer-type-def type-id='type-id-322' size-in-bits='64' id='type-id-325'/>
+    <pointer-type-def type-id='type-id-258' size-in-bits='64' id='type-id-194'/>
     <!-- reflexChain* -->
-    <pointer-type-def type-id='type-id-318' size-in-bits='64' id='type-id-320'/>
-    <!-- reflexChain* const -->
-    <qualified-type-def type-id='type-id-320' const='yes' id='type-id-326'/>
+    <pointer-type-def type-id='type-id-250' size-in-bits='64' id='type-id-252'/>
     <!-- vertexArray* -->
-    <pointer-type-def type-id='type-id-314' size-in-bits='64' id='type-id-316'/>
-    <!-- vertexArray* const -->
-    <qualified-type-def type-id='type-id-316' const='yes' id='type-id-327'/>
+    <pointer-type-def type-id='type-id-254' size-in-bits='64' id='type-id-256'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/monotonizer.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/nurbsinterfac.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- struct O_pwlcurve -->
-    <class-decl name='O_pwlcurve' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='83' column='1' id='type-id-139'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- TrimVertex* O_pwlcurve::pts -->
-        <var-decl name='pts' type-id='type-id-141' visibility='default' filepath='libnurbs/internals/reader.h' line='85' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int O_pwlcurve::npts -->
-        <var-decl name='npts' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='86' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- O_pwlcurve* O_pwlcurve::next -->
-        <var-decl name='next' type-id='type-id-99' visibility='default' filepath='libnurbs/internals/reader.h' line='87' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- int O_pwlcurve::used -->
-        <var-decl name='used' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='88' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='224'>
-        <!-- int O_pwlcurve::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='89' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- O_curve* O_pwlcurve::owner -->
-        <var-decl name='owner' type-id='type-id-85' visibility='default' filepath='libnurbs/internals/reader.h' line='90' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- O_pwlcurve::O_pwlcurve(long int, long int, float*, long int, TrimVertex*) -->
-        <function-decl name='O_pwlcurve' filepath='libnurbs/internals/reader.h' line='91' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'O_pwlcurve*' -->
-          <parameter type-id='type-id-99' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'float*' -->
-          <parameter type-id='type-id-58'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'TrimVertex*' -->
-          <parameter type-id='type-id-141'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct Property -->
-    <class-decl name='Property' size-in-bits='192' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='120' column='1' id='type-id-328'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- long int Property::type -->
-        <var-decl name='type' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/reader.h' line='121' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- long int Property::tag -->
-        <var-decl name='tag' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/reader.h' line='122' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- REAL Property::value -->
-        <var-decl name='value' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/reader.h' line='123' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- int Property::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='124' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- Property::Property(long int, long int, float) -->
-        <function-decl name='Property' filepath='libnurbs/internals/reader.h' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Property*' -->
-          <parameter type-id='type-id-329' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'float' -->
-          <parameter type-id='type-id-28'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='public' constructor='yes'>
-        <!-- Property::Property(long int, float) -->
-        <function-decl name='Property' filepath='libnurbs/internals/reader.h' line='127' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'Property*' -->
-          <parameter type-id='type-id-329' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- parameter of type 'float' -->
-          <parameter type-id='type-id-28'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
+    <!-- enum Curvetype -->
+    <enum-decl name='Curvetype' filepath='libnurbs/internals/reader.h' line='42' column='1' id='type-id-260'>
+      <underlying-type type-id='type-id-12'/>
+      <enumerator name='ct_nurbscurve' value='0'/>
+      <enumerator name='ct_pwlcurve' value='1'/>
+      <enumerator name='ct_none' value='2'/>
+    </enum-decl>
     <!-- struct O_curve -->
-    <class-decl name='O_curve' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='55' column='1' id='type-id-96'>
+    <class-decl name='O_curve' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='55' column='1' id='type-id-261'>
       <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
       <member-type access='public'>
         <!-- union {O_nurbscurve* o_nurbscurve; O_pwlcurve* o_pwlcurve;} -->
-        <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='56' column='1' id='type-id-158'>
+        <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='56' column='1' id='type-id-262'>
           <data-member access='public'>
             <!-- O_nurbscurve* o_nurbscurve -->
-            <var-decl name='o_nurbscurve' type-id='type-id-97' visibility='default' filepath='libnurbs/internals/reader.h' line='57' column='1'/>
+            <var-decl name='o_nurbscurve' type-id='type-id-86' visibility='default' filepath='libnurbs/internals/reader.h' line='57' column='1'/>
           </data-member>
           <data-member access='public'>
             <!-- O_pwlcurve* o_pwlcurve -->
-            <var-decl name='o_pwlcurve' type-id='type-id-99' visibility='default' filepath='libnurbs/internals/reader.h' line='58' column='1'/>
+            <var-decl name='o_pwlcurve' type-id='type-id-82' visibility='default' filepath='libnurbs/internals/reader.h' line='58' column='1'/>
           </data-member>
         </union-decl>
       </member-type>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- union {O_nurbscurve* o_nurbscurve; O_pwlcurve* o_pwlcurve;} O_curve::curve -->
-        <var-decl name='curve' type-id='type-id-158' visibility='default' filepath='libnurbs/internals/reader.h' line='59' column='1'/>
+        <var-decl name='curve' type-id='type-id-262' visibility='default' filepath='libnurbs/internals/reader.h' line='59' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- Curvetype O_curve::curvetype -->
-        <var-decl name='curvetype' type-id='type-id-159' visibility='default' filepath='libnurbs/internals/reader.h' line='60' column='1'/>
+        <var-decl name='curvetype' type-id='type-id-260' visibility='default' filepath='libnurbs/internals/reader.h' line='60' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- O_curve* O_curve::next -->
-        <var-decl name='next' type-id='type-id-85' visibility='default' filepath='libnurbs/internals/reader.h' line='61' column='1'/>
+        <var-decl name='next' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/reader.h' line='61' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- O_surface* O_curve::owner -->
-        <var-decl name='owner' type-id='type-id-83' visibility='default' filepath='libnurbs/internals/reader.h' line='62' column='1'/>
+        <var-decl name='owner' type-id='type-id-74' visibility='default' filepath='libnurbs/internals/reader.h' line='62' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- int O_curve::used -->
-        <var-decl name='used' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='63' column='1'/>
+        <var-decl name='used' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='63' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='288'>
         <!-- int O_curve::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='64' column='1'/>
+        <var-decl name='save' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='64' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- long int O_curve::nuid -->
-        <var-decl name='nuid' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/reader.h' line='65' column='1'/>
+        <var-decl name='nuid' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/reader.h' line='65' column='1'/>
       </data-member>
       <member-function access='public' constructor='yes'>
         <!-- O_curve::O_curve() -->
         <function-decl name='O_curve' filepath='libnurbs/internals/reader.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'O_curve*' -->
-          <parameter type-id='type-id-85' is-artificial='yes'/>
+          <parameter type-id='type-id-76' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct O_trim -->
-    <class-decl name='O_trim' size-in-bits='192' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='94' column='1' id='type-id-101'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- O_curve* O_trim::o_curve -->
-        <var-decl name='o_curve' type-id='type-id-85' visibility='default' filepath='libnurbs/internals/reader.h' line='95' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- O_trim* O_trim::next -->
-        <var-decl name='next' type-id='type-id-84' visibility='default' filepath='libnurbs/internals/reader.h' line='96' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int O_trim::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='97' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- O_trim::O_trim() -->
-        <function-decl name='O_trim' filepath='libnurbs/internals/reader.h' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'O_trim*' -->
-          <parameter type-id='type-id-84' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- struct O_surface -->
-    <class-decl name='O_surface' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='112' column='1' id='type-id-100'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- O_nurbssurface* O_surface::o_nurbssurface -->
-        <var-decl name='o_nurbssurface' type-id='type-id-98' visibility='default' filepath='libnurbs/internals/reader.h' line='113' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- O_trim* O_surface::o_trim -->
-        <var-decl name='o_trim' type-id='type-id-84' visibility='default' filepath='libnurbs/internals/reader.h' line='114' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int O_surface::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='115' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- long int O_surface::nuid -->
-        <var-decl name='nuid' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/reader.h' line='116' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- O_surface::O_surface() -->
-        <function-decl name='O_surface' filepath='libnurbs/internals/reader.h' line='117' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'O_surface*' -->
-          <parameter type-id='type-id-83' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
-    <!-- enum Curvetype -->
-    <enum-decl name='Curvetype' filepath='libnurbs/internals/reader.h' line='42' column='1' id='type-id-159'>
-      <underlying-type type-id='type-id-9'/>
-      <enumerator name='ct_nurbscurve' value='0'/>
-      <enumerator name='ct_pwlcurve' value='1'/>
-      <enumerator name='ct_none' value='2'/>
-    </enum-decl>
-    <!-- struct O_nurbssurface -->
-    <class-decl name='O_nurbssurface' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='101' column='1' id='type-id-138'>
-      <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- Quilt* O_nurbssurface::bezier_patches -->
-        <var-decl name='bezier_patches' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/reader.h' line='102' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- long int O_nurbssurface::type -->
-        <var-decl name='type' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/reader.h' line='103' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- O_surface* O_nurbssurface::owner -->
-        <var-decl name='owner' type-id='type-id-83' visibility='default' filepath='libnurbs/internals/reader.h' line='104' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- O_nurbssurface* O_nurbssurface::next -->
-        <var-decl name='next' type-id='type-id-98' visibility='default' filepath='libnurbs/internals/reader.h' line='105' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- int O_nurbssurface::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='106' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='288'>
-        <!-- int O_nurbssurface::used -->
-        <var-decl name='used' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='107' column='1'/>
-      </data-member>
-      <member-function access='public' constructor='yes'>
-        <!-- O_nurbssurface::O_nurbssurface(long int) -->
-        <function-decl name='O_nurbssurface' filepath='libnurbs/internals/reader.h' line='108' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'O_nurbssurface*' -->
-          <parameter type-id='type-id-98' is-artificial='yes'/>
-          <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- struct O_nurbscurve -->
-    <class-decl name='O_nurbscurve' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='70' column='1' id='type-id-137'>
+    <class-decl name='O_nurbscurve' size-in-bits='384' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='70' column='1' id='type-id-263'>
       <!-- class PooledObj -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-157'/>
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- Quilt* O_nurbscurve::bezier_curves -->
-        <var-decl name='bezier_curves' type-id='type-id-125' visibility='default' filepath='libnurbs/internals/reader.h' line='71' column='1'/>
+        <var-decl name='bezier_curves' type-id='type-id-148' visibility='default' filepath='libnurbs/internals/reader.h' line='71' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- long int O_nurbscurve::type -->
-        <var-decl name='type' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/reader.h' line='72' column='1'/>
+        <var-decl name='type' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/reader.h' line='72' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- REAL O_nurbscurve::tesselation -->
@@ -8472,92 +11382,283 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='160'>
         <!-- int O_nurbscurve::method -->
-        <var-decl name='method' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='74' column='1'/>
+        <var-decl name='method' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='74' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- O_nurbscurve* O_nurbscurve::next -->
-        <var-decl name='next' type-id='type-id-97' visibility='default' filepath='libnurbs/internals/reader.h' line='75' column='1'/>
+        <var-decl name='next' type-id='type-id-86' visibility='default' filepath='libnurbs/internals/reader.h' line='75' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- int O_nurbscurve::used -->
-        <var-decl name='used' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='76' column='1'/>
+        <var-decl name='used' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='76' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='288'>
         <!-- int O_nurbscurve::save -->
-        <var-decl name='save' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/reader.h' line='77' column='1'/>
+        <var-decl name='save' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='77' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- O_curve* O_nurbscurve::owner -->
-        <var-decl name='owner' type-id='type-id-85' visibility='default' filepath='libnurbs/internals/reader.h' line='78' column='1'/>
+        <var-decl name='owner' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/reader.h' line='78' column='1'/>
       </data-member>
       <member-function access='public' constructor='yes'>
         <!-- O_nurbscurve::O_nurbscurve(long int) -->
         <function-decl name='O_nurbscurve' filepath='libnurbs/internals/reader.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'O_nurbscurve*' -->
-          <parameter type-id='type-id-97' is-artificial='yes'/>
+          <parameter type-id='type-id-86' is-artificial='yes'/>
           <!-- parameter of type 'long int' -->
-          <parameter type-id='type-id-15'/>
+          <parameter type-id='type-id-38'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- NurbsTessellator* const -->
-    <qualified-type-def type-id='type-id-87' const='yes' id='type-id-330'/>
+    <!-- struct O_pwlcurve -->
+    <class-decl name='O_pwlcurve' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='83' column='1' id='type-id-264'>
+      <!-- class PooledObj -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- TrimVertex* O_pwlcurve::pts -->
+        <var-decl name='pts' type-id='type-id-127' visibility='default' filepath='libnurbs/internals/reader.h' line='85' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- int O_pwlcurve::npts -->
+        <var-decl name='npts' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='86' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- O_pwlcurve* O_pwlcurve::next -->
+        <var-decl name='next' type-id='type-id-82' visibility='default' filepath='libnurbs/internals/reader.h' line='87' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- int O_pwlcurve::used -->
+        <var-decl name='used' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='88' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='224'>
+        <!-- int O_pwlcurve::save -->
+        <var-decl name='save' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='89' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- O_curve* O_pwlcurve::owner -->
+        <var-decl name='owner' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/reader.h' line='90' column='1'/>
+      </data-member>
+      <member-function access='public' constructor='yes'>
+        <!-- O_pwlcurve::O_pwlcurve(long int, long int, float*, long int, TrimVertex*) -->
+        <function-decl name='O_pwlcurve' filepath='libnurbs/internals/reader.h' line='91' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'O_pwlcurve*' -->
+          <parameter type-id='type-id-82' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'TrimVertex*' -->
+          <parameter type-id='type-id-127'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- struct O_trim -->
+    <class-decl name='O_trim' size-in-bits='192' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='94' column='1' id='type-id-265'>
+      <!-- class PooledObj -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- O_curve* O_trim::o_curve -->
+        <var-decl name='o_curve' type-id='type-id-76' visibility='default' filepath='libnurbs/internals/reader.h' line='95' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- O_trim* O_trim::next -->
+        <var-decl name='next' type-id='type-id-75' visibility='default' filepath='libnurbs/internals/reader.h' line='96' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- int O_trim::save -->
+        <var-decl name='save' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='97' column='1'/>
+      </data-member>
+      <member-function access='public' constructor='yes'>
+        <!-- O_trim::O_trim() -->
+        <function-decl name='O_trim' filepath='libnurbs/internals/reader.h' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'O_trim*' -->
+          <parameter type-id='type-id-75' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- struct O_nurbssurface -->
+    <class-decl name='O_nurbssurface' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='101' column='1' id='type-id-266'>
+      <!-- class PooledObj -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- Quilt* O_nurbssurface::bezier_patches -->
+        <var-decl name='bezier_patches' type-id='type-id-148' visibility='default' filepath='libnurbs/internals/reader.h' line='102' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- long int O_nurbssurface::type -->
+        <var-decl name='type' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/reader.h' line='103' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- O_surface* O_nurbssurface::owner -->
+        <var-decl name='owner' type-id='type-id-74' visibility='default' filepath='libnurbs/internals/reader.h' line='104' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- O_nurbssurface* O_nurbssurface::next -->
+        <var-decl name='next' type-id='type-id-85' visibility='default' filepath='libnurbs/internals/reader.h' line='105' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- int O_nurbssurface::save -->
+        <var-decl name='save' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='106' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='288'>
+        <!-- int O_nurbssurface::used -->
+        <var-decl name='used' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='107' column='1'/>
+      </data-member>
+      <member-function access='public' constructor='yes'>
+        <!-- O_nurbssurface::O_nurbssurface(long int) -->
+        <function-decl name='O_nurbssurface' filepath='libnurbs/internals/reader.h' line='108' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'O_nurbssurface*' -->
+          <parameter type-id='type-id-85' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- struct O_surface -->
+    <class-decl name='O_surface' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='112' column='1' id='type-id-267'>
+      <!-- class PooledObj -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- O_nurbssurface* O_surface::o_nurbssurface -->
+        <var-decl name='o_nurbssurface' type-id='type-id-85' visibility='default' filepath='libnurbs/internals/reader.h' line='113' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- O_trim* O_surface::o_trim -->
+        <var-decl name='o_trim' type-id='type-id-75' visibility='default' filepath='libnurbs/internals/reader.h' line='114' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- int O_surface::save -->
+        <var-decl name='save' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='115' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- long int O_surface::nuid -->
+        <var-decl name='nuid' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/reader.h' line='116' column='1'/>
+      </data-member>
+      <member-function access='public' constructor='yes'>
+        <!-- O_surface::O_surface() -->
+        <function-decl name='O_surface' filepath='libnurbs/internals/reader.h' line='117' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'O_surface*' -->
+          <parameter type-id='type-id-74' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- struct Property -->
+    <class-decl name='Property' size-in-bits='192' is-struct='yes' visibility='default' filepath='libnurbs/internals/reader.h' line='120' column='1' id='type-id-268'>
+      <!-- class PooledObj -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-115'/>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- long int Property::type -->
+        <var-decl name='type' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/reader.h' line='121' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- long int Property::tag -->
+        <var-decl name='tag' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/reader.h' line='122' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- REAL Property::value -->
+        <var-decl name='value' type-id='type-id-1' visibility='default' filepath='libnurbs/internals/reader.h' line='123' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <!-- int Property::save -->
+        <var-decl name='save' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/reader.h' line='124' column='1'/>
+      </data-member>
+      <member-function access='public' constructor='yes'>
+        <!-- Property::Property(long int, long int, float) -->
+        <function-decl name='Property' filepath='libnurbs/internals/reader.h' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Property*' -->
+          <parameter type-id='type-id-81' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float' -->
+          <parameter type-id='type-id-15'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public' constructor='yes'>
+        <!-- Property::Property(long int, float) -->
+        <function-decl name='Property' filepath='libnurbs/internals/reader.h' line='127' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Property*' -->
+          <parameter type-id='type-id-81' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- parameter of type 'float' -->
+          <parameter type-id='type-id-15'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
     <!-- O_curve* -->
-    <pointer-type-def type-id='type-id-96' size-in-bits='64' id='type-id-85'/>
+    <pointer-type-def type-id='type-id-261' size-in-bits='64' id='type-id-76'/>
     <!-- O_curve** -->
-    <pointer-type-def type-id='type-id-85' size-in-bits='64' id='type-id-79'/>
+    <pointer-type-def type-id='type-id-76' size-in-bits='64' id='type-id-70'/>
     <!-- O_nurbscurve* -->
-    <pointer-type-def type-id='type-id-137' size-in-bits='64' id='type-id-97'/>
+    <pointer-type-def type-id='type-id-263' size-in-bits='64' id='type-id-86'/>
     <!-- O_nurbscurve** -->
-    <pointer-type-def type-id='type-id-97' size-in-bits='64' id='type-id-80'/>
+    <pointer-type-def type-id='type-id-86' size-in-bits='64' id='type-id-71'/>
     <!-- O_nurbssurface* -->
-    <pointer-type-def type-id='type-id-138' size-in-bits='64' id='type-id-98'/>
+    <pointer-type-def type-id='type-id-266' size-in-bits='64' id='type-id-85'/>
     <!-- O_nurbssurface** -->
-    <pointer-type-def type-id='type-id-98' size-in-bits='64' id='type-id-82'/>
+    <pointer-type-def type-id='type-id-85' size-in-bits='64' id='type-id-73'/>
     <!-- O_pwlcurve* -->
-    <pointer-type-def type-id='type-id-139' size-in-bits='64' id='type-id-99'/>
+    <pointer-type-def type-id='type-id-264' size-in-bits='64' id='type-id-82'/>
     <!-- O_pwlcurve** -->
-    <pointer-type-def type-id='type-id-99' size-in-bits='64' id='type-id-81'/>
+    <pointer-type-def type-id='type-id-82' size-in-bits='64' id='type-id-72'/>
     <!-- O_surface* -->
-    <pointer-type-def type-id='type-id-100' size-in-bits='64' id='type-id-83'/>
+    <pointer-type-def type-id='type-id-267' size-in-bits='64' id='type-id-74'/>
     <!-- O_trim* -->
-    <pointer-type-def type-id='type-id-101' size-in-bits='64' id='type-id-84'/>
+    <pointer-type-def type-id='type-id-265' size-in-bits='64' id='type-id-75'/>
     <!-- O_trim** -->
-    <pointer-type-def type-id='type-id-84' size-in-bits='64' id='type-id-78'/>
+    <pointer-type-def type-id='type-id-75' size-in-bits='64' id='type-id-69'/>
     <!-- Property* -->
-    <pointer-type-def type-id='type-id-328' size-in-bits='64' id='type-id-329'/>
+    <pointer-type-def type-id='type-id-268' size-in-bits='64' id='type-id-81'/>
     <!-- Renderhints* -->
-    <pointer-type-def type-id='type-id-71' size-in-bits='64' id='type-id-118'/>
+    <pointer-type-def type-id='type-id-62' size-in-bits='64' id='type-id-169'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/patch.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- Patchspec[2] -->
-    <array-type-def dimensions='1' type-id='type-id-274' size-in-bits='640' id='type-id-271'>
+    <array-type-def dimensions='1' type-id='type-id-269' size-in-bits='640' id='type-id-270'>
       <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
+      <subrange length='2' type-id='type-id-3' id='type-id-87'/>
     </array-type-def>
     <!-- REAL[2880] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='92160' id='type-id-270'>
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='92160' id='type-id-271'>
       <!-- <anonymous range>[2880] -->
-      <subrange length='2880' type-id='type-id-3' id='type-id-276'/>
+      <subrange length='2880' type-id='type-id-3' id='type-id-272'/>
     </array-type-def>
     <!-- REAL[2][5] -->
-    <array-type-def dimensions='2' type-id='type-id-1' size-in-bits='320' id='type-id-272'>
+    <array-type-def dimensions='2' type-id='type-id-1' size-in-bits='320' id='type-id-273'>
       <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
+      <subrange length='2' type-id='type-id-3' id='type-id-87'/>
       <!-- <anonymous range>[5] -->
-      <subrange length='5' type-id='type-id-3' id='type-id-190'/>
+      <subrange length='5' type-id='type-id-3' id='type-id-213'/>
     </array-type-def>
     <!-- struct Pspec -->
-    <class-decl name='Pspec' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/patch.h' line='46' column='1' id='type-id-267'>
+    <class-decl name='Pspec' size-in-bits='256' is-struct='yes' visibility='default' filepath='libnurbs/internals/patch.h' line='46' column='1' id='type-id-274'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- REAL Pspec::range[3] -->
-        <var-decl name='range' type-id='type-id-230' visibility='default' filepath='libnurbs/internals/patch.h' line='47' column='1'/>
+        <var-decl name='range' type-id='type-id-89' visibility='default' filepath='libnurbs/internals/patch.h' line='47' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='96'>
         <!-- REAL Pspec::sidestep[2] -->
-        <var-decl name='sidestep' type-id='type-id-164' visibility='default' filepath='libnurbs/internals/patch.h' line='48' column='1'/>
+        <var-decl name='sidestep' type-id='type-id-88' visibility='default' filepath='libnurbs/internals/patch.h' line='48' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='160'>
         <!-- REAL Pspec::stepsize -->
@@ -8569,898 +11670,2356 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='224'>
         <!-- int Pspec::needsSubdivision -->
-        <var-decl name='needsSubdivision' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patch.h' line='51' column='1'/>
+        <var-decl name='needsSubdivision' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/patch.h' line='51' column='1'/>
       </data-member>
     </class-decl>
+    <!-- struct Patchspec -->
+    <class-decl name='Patchspec' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/patch.h' line='54' column='1' id='type-id-269'>
+      <!-- struct Pspec -->
+      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-274'/>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- int Patchspec::order -->
+        <var-decl name='order' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/patch.h' line='55' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='288'>
+        <!-- int Patchspec::stride -->
+        <var-decl name='stride' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/patch.h' line='56' column='1'/>
+      </data-member>
+      <member-function access='public'>
+        <!-- void Patchspec::singleStep() -->
+        <function-decl name='singleStep' mangled-name='_ZN9Patchspec10singleStepEv' filepath='libnurbs/internals/patch.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchspec*' -->
+          <parameter type-id='type-id-275' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Patchspec::clamp(REAL) -->
+        <function-decl name='clamp' mangled-name='_ZN9Patchspec5clampEf' filepath='libnurbs/internals/patch.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchspec*' -->
+          <parameter type-id='type-id-275' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Patchspec::getstepsize(REAL) -->
+        <function-decl name='getstepsize' mangled-name='_ZN9Patchspec11getstepsizeEf' filepath='libnurbs/internals/patch.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patchspec*' -->
+          <parameter type-id='type-id-275' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
     <!-- class Patch -->
-    <class-decl name='Patch' size-in-bits='277696' visibility='default' filepath='libnurbs/internals/patch.h' line='62' column='1' id='type-id-266'>
+    <class-decl name='Patch' size-in-bits='277696' visibility='default' filepath='libnurbs/internals/patch.h' line='62' column='1' id='type-id-276'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- Mapdesc* Patch::mapdesc -->
-        <var-decl name='mapdesc' type-id='type-id-107' visibility='default' filepath='libnurbs/internals/patch.h' line='82' column='1'/>
+        <var-decl name='mapdesc' type-id='type-id-163' visibility='default' filepath='libnurbs/internals/patch.h' line='82' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- Patch* Patch::next -->
-        <var-decl name='next' type-id='type-id-256' visibility='default' filepath='libnurbs/internals/patch.h' line='83' column='1'/>
+        <var-decl name='next' type-id='type-id-158' visibility='default' filepath='libnurbs/internals/patch.h' line='83' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
         <!-- int Patch::cullval -->
-        <var-decl name='cullval' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patch.h' line='84' column='1'/>
+        <var-decl name='cullval' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/patch.h' line='84' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='160'>
         <!-- int Patch::notInBbox -->
-        <var-decl name='notInBbox' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patch.h' line='85' column='1'/>
+        <var-decl name='notInBbox' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/patch.h' line='85' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='192'>
         <!-- int Patch::needsSampling -->
-        <var-decl name='needsSampling' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patch.h' line='86' column='1'/>
+        <var-decl name='needsSampling' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/patch.h' line='86' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='224'>
         <!-- REAL Patch::cpts[2880] -->
-        <var-decl name='cpts' type-id='type-id-270' visibility='default' filepath='libnurbs/internals/patch.h' line='87' column='1'/>
+        <var-decl name='cpts' type-id='type-id-271' visibility='default' filepath='libnurbs/internals/patch.h' line='87' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='92384'>
         <!-- REAL Patch::spts[2880] -->
-        <var-decl name='spts' type-id='type-id-270' visibility='default' filepath='libnurbs/internals/patch.h' line='88' column='1'/>
+        <var-decl name='spts' type-id='type-id-271' visibility='default' filepath='libnurbs/internals/patch.h' line='88' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='184544'>
         <!-- REAL Patch::bpts[2880] -->
-        <var-decl name='bpts' type-id='type-id-270' visibility='default' filepath='libnurbs/internals/patch.h' line='89' column='1'/>
+        <var-decl name='bpts' type-id='type-id-271' visibility='default' filepath='libnurbs/internals/patch.h' line='89' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='276704'>
         <!-- Patchspec Patch::pspec[2] -->
-        <var-decl name='pspec' type-id='type-id-271' visibility='default' filepath='libnurbs/internals/patch.h' line='90' column='1'/>
+        <var-decl name='pspec' type-id='type-id-270' visibility='default' filepath='libnurbs/internals/patch.h' line='90' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='277344'>
         <!-- REAL Patch::bb[2][5] -->
-        <var-decl name='bb' type-id='type-id-272' visibility='default' filepath='libnurbs/internals/patch.h' line='92' column='1'/>
+        <var-decl name='bb' type-id='type-id-273' visibility='default' filepath='libnurbs/internals/patch.h' line='92' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- Patch::Patch(Quilt*, REAL*, REAL*, Patch*) -->
         <function-decl name='Patch' filepath='libnurbs/internals/patch.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Patch*' -->
-          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <parameter type-id='type-id-158' is-artificial='yes'/>
           <!-- parameter of type 'Quilt*' -->
-          <parameter type-id='type-id-125'/>
+          <parameter type-id='type-id-148'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- parameter of type 'REAL*' -->
-          <parameter type-id='type-id-16'/>
+          <parameter type-id='type-id-22'/>
           <!-- parameter of type 'Patch*' -->
-          <parameter type-id='type-id-256'/>
+          <parameter type-id='type-id-158'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
         <!-- Patch::Patch(Patch&, int, REAL, Patch*) -->
         <function-decl name='Patch' filepath='libnurbs/internals/patch.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Patch*' -->
-          <parameter type-id='type-id-256' is-artificial='yes'/>
+          <parameter type-id='type-id-158' is-artificial='yes'/>
           <!-- parameter of type 'Patch&' -->
-          <parameter type-id='type-id-273'/>
+          <parameter type-id='type-id-277'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- parameter of type 'typedef REAL' -->
           <parameter type-id='type-id-1'/>
           <!-- parameter of type 'Patch*' -->
-          <parameter type-id='type-id-256'/>
+          <parameter type-id='type-id-158'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Patch::needsSamplingSubdivision() -->
+        <function-decl name='needsSamplingSubdivision' mangled-name='_ZN5Patch24needsSamplingSubdivisionEv' filepath='libnurbs/internals/patch.h' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patch*' -->
+          <parameter type-id='type-id-158' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Patch::clamp() -->
+        <function-decl name='clamp' mangled-name='_ZN5Patch5clampEv' filepath='libnurbs/internals/patch.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patch*' -->
+          <parameter type-id='type-id-158' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Patch::needsNonSamplingSubdivision() -->
+        <function-decl name='needsNonSamplingSubdivision' mangled-name='_ZN5Patch27needsNonSamplingSubdivisionEv' filepath='libnurbs/internals/patch.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patch*' -->
+          <parameter type-id='type-id-158' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Patch::needsSubdivision(int) -->
+        <function-decl name='needsSubdivision' mangled-name='_ZN5Patch16needsSubdivisionEi' filepath='libnurbs/internals/patch.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patch*' -->
+          <parameter type-id='type-id-158' is-artificial='yes'/>
+          <!-- parameter of type 'int' -->
+          <parameter type-id='type-id-8'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Patch::cullCheck() -->
+        <function-decl name='cullCheck' mangled-name='_ZN5Patch9cullCheckEv' filepath='libnurbs/internals/patch.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patch*' -->
+          <parameter type-id='type-id-158' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Patch::getstepsize() -->
+        <function-decl name='getstepsize' mangled-name='_ZN5Patch11getstepsizeEv' filepath='libnurbs/internals/patch.h' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patch*' -->
+          <parameter type-id='type-id-158' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Patch::bbox() -->
+        <function-decl name='bbox' mangled-name='_ZN5Patch4bboxEv' filepath='libnurbs/internals/patch.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patch*' -->
+          <parameter type-id='type-id-158' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Patch::checkBboxConstraint() -->
+        <function-decl name='checkBboxConstraint' mangled-name='_ZN5Patch19checkBboxConstraintEv' filepath='libnurbs/internals/patch.h' line='91' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patch*' -->
+          <parameter type-id='type-id-158' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Patch::get_uorder() -->
+        <function-decl name='get_uorder' mangled-name='_ZN5Patch10get_uorderEv' filepath='libnurbs/internals/patch.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patch*' -->
+          <parameter type-id='type-id-158' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- int Patch::get_vorder() -->
+        <function-decl name='get_vorder' mangled-name='_ZN5Patch10get_vorderEv' filepath='libnurbs/internals/patch.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Patch*' -->
+          <parameter type-id='type-id-158' is-artificial='yes'/>
+          <!-- int -->
+          <return type-id='type-id-8'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- struct Patchspec -->
-    <class-decl name='Patchspec' size-in-bits='320' is-struct='yes' visibility='default' filepath='libnurbs/internals/patch.h' line='54' column='1' id='type-id-274'>
-      <!-- struct Pspec -->
-      <base-class access='public' layout-offset-in-bits='0' type-id='type-id-267'/>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- int Patchspec::order -->
-        <var-decl name='order' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patch.h' line='55' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='288'>
-        <!-- int Patchspec::stride -->
-        <var-decl name='stride' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/patch.h' line='56' column='1'/>
-      </data-member>
-    </class-decl>
     <!-- Patch& -->
-    <reference-type-def kind='lvalue' type-id='type-id-266' size-in-bits='64' id='type-id-273'/>
+    <reference-type-def kind='lvalue' type-id='type-id-276' size-in-bits='64' id='type-id-277'/>
     <!-- Patch* -->
-    <pointer-type-def type-id='type-id-266' size-in-bits='64' id='type-id-256'/>
-    <!-- Patch* const -->
-    <qualified-type-def type-id='type-id-256' const='yes' id='type-id-331'/>
+    <pointer-type-def type-id='type-id-276' size-in-bits='64' id='type-id-158'/>
     <!-- Patchspec* -->
-    <pointer-type-def type-id='type-id-274' size-in-bits='64' id='type-id-332'/>
-    <!-- Patchspec* const -->
-    <qualified-type-def type-id='type-id-332' const='yes' id='type-id-333'/>
+    <pointer-type-def type-id='type-id-269' size-in-bits='64' id='type-id-275'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/patchlist.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- Pspec[2] -->
-    <array-type-def dimensions='1' type-id='type-id-267' size-in-bits='512' id='type-id-257'>
+    <array-type-def dimensions='1' type-id='type-id-274' size-in-bits='512' id='type-id-159'>
       <!-- <anonymous range>[2] -->
-      <subrange length='2' type-id='type-id-3' id='type-id-64'/>
+      <subrange length='2' type-id='type-id-3' id='type-id-87'/>
     </array-type-def>
     <!-- Patchlist* -->
-    <pointer-type-def type-id='type-id-255' size-in-bits='64' id='type-id-258'/>
-    <!-- Patchlist* const -->
-    <qualified-type-def type-id='type-id-258' const='yes' id='type-id-334'/>
+    <pointer-type-def type-id='type-id-157' size-in-bits='64' id='type-id-160'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/quilt.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- Flist& -->
-    <qualified-type-def type-id='type-id-295' id='type-id-335'/>
-    <!-- Quilt* const -->
-    <qualified-type-def type-id='type-id-125' const='yes' id='type-id-336'/>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/renderhints.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- Renderhints* const -->
-    <qualified-type-def type-id='type-id-118' const='yes' id='type-id-337'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/slicer.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- class rectBlock -->
-    <class-decl name='rectBlock' size-in-bits='192' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='39' column='1' id='type-id-338'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Int rectBlock::upGridLineIndex -->
-        <var-decl name='upGridLineIndex' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='40' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='32'>
-        <!-- Int rectBlock::lowGridLineIndex -->
-        <var-decl name='lowGridLineIndex' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='41' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Int* rectBlock::leftIndices -->
-        <var-decl name='leftIndices' type-id='type-id-323' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='42' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- Int* rectBlock::rightIndices -->
-        <var-decl name='rightIndices' type-id='type-id-323' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='43' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- rectBlock::rectBlock(gridBoundaryChain*, gridBoundaryChain*, Int, Int) -->
-        <function-decl name='rectBlock' filepath='libnurbs/nurbtess/rectBlock.h' line='46' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'rectBlock*' -->
-          <parameter type-id='type-id-339' is-artificial='yes'/>
-          <!-- parameter of type 'gridBoundaryChain*' -->
-          <parameter type-id='type-id-340'/>
-          <!-- parameter of type 'gridBoundaryChain*' -->
-          <parameter type-id='type-id-340'/>
-          <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
-          <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- rectBlock::~rectBlock(int) -->
-        <function-decl name='~rectBlock' filepath='libnurbs/nurbtess/rectBlock.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'rectBlock*' -->
-          <parameter type-id='type-id-339' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
     <!-- class gridWrap -->
-    <class-decl name='gridWrap' size-in-bits='384' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='42' column='1' id='type-id-341'>
+    <class-decl name='gridWrap' size-in-bits='384' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='42' column='1' id='type-id-278'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- Int gridWrap::n_ulines -->
-        <var-decl name='n_ulines' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='43' column='1'/>
+        <var-decl name='n_ulines' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='43' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='32'>
         <!-- Int gridWrap::n_vlines -->
-        <var-decl name='n_vlines' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='44' column='1'/>
+        <var-decl name='n_vlines' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='44' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- Real gridWrap::u_min -->
-        <var-decl name='u_min' type-id='type-id-311' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='45' column='1'/>
+        <var-decl name='u_min' type-id='type-id-246' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='45' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='96'>
         <!-- Real gridWrap::u_max -->
-        <var-decl name='u_max' type-id='type-id-311' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='45' column='1'/>
+        <var-decl name='u_max' type-id='type-id-246' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='45' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
         <!-- Real gridWrap::v_min -->
-        <var-decl name='v_min' type-id='type-id-311' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='46' column='1'/>
+        <var-decl name='v_min' type-id='type-id-246' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='46' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='160'>
         <!-- Real gridWrap::v_max -->
-        <var-decl name='v_max' type-id='type-id-311' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='46' column='1'/>
+        <var-decl name='v_max' type-id='type-id-246' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='46' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='192'>
         <!-- Real* gridWrap::u_values -->
-        <var-decl name='u_values' type-id='type-id-324' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='52' column='1'/>
+        <var-decl name='u_values' type-id='type-id-253' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='52' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='256'>
         <!-- Real* gridWrap::v_values -->
-        <var-decl name='v_values' type-id='type-id-324' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='53' column='1'/>
+        <var-decl name='v_values' type-id='type-id-253' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='53' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='320'>
         <!-- Int gridWrap::is_uniform -->
-        <var-decl name='is_uniform' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='55' column='1'/>
+        <var-decl name='is_uniform' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='55' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- gridWrap::gridWrap(Int, Int, Real, Real, Real, Real) -->
         <function-decl name='gridWrap' filepath='libnurbs/nurbtess/gridWrap.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'gridWrap*' -->
-          <parameter type-id='type-id-342' is-artificial='yes'/>
+          <parameter type-id='type-id-193' is-artificial='yes'/>
           <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
+          <parameter type-id='type-id-248'/>
           <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
+          <parameter type-id='type-id-248'/>
           <!-- parameter of type 'typedef Real' -->
-          <parameter type-id='type-id-311'/>
+          <parameter type-id='type-id-246'/>
           <!-- parameter of type 'typedef Real' -->
-          <parameter type-id='type-id-311'/>
+          <parameter type-id='type-id-246'/>
           <!-- parameter of type 'typedef Real' -->
-          <parameter type-id='type-id-311'/>
+          <parameter type-id='type-id-246'/>
           <!-- parameter of type 'typedef Real' -->
-          <parameter type-id='type-id-311'/>
+          <parameter type-id='type-id-246'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
         <!-- gridWrap::gridWrap(Int, Real*, Int, Real*) -->
         <function-decl name='gridWrap' filepath='libnurbs/nurbtess/gridWrap.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'gridWrap*' -->
-          <parameter type-id='type-id-342' is-artificial='yes'/>
+          <parameter type-id='type-id-193' is-artificial='yes'/>
           <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
+          <parameter type-id='type-id-248'/>
           <!-- parameter of type 'Real*' -->
-          <parameter type-id='type-id-324'/>
+          <parameter type-id='type-id-253'/>
           <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
+          <parameter type-id='type-id-248'/>
           <!-- parameter of type 'Real*' -->
-          <parameter type-id='type-id-324'/>
+          <parameter type-id='type-id-253'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- gridWrap::~gridWrap(int) -->
         <function-decl name='~gridWrap' filepath='libnurbs/nurbtess/gridWrap.h' line='68' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'gridWrap*' -->
-          <parameter type-id='type-id-342' is-artificial='yes'/>
+          <parameter type-id='type-id-193' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
-    </class-decl>
-    <!-- class rectBlockArray -->
-    <class-decl name='rectBlockArray' size-in-bits='128' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='61' column='1' id='type-id-343'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- rectBlock** rectBlockArray::array -->
-        <var-decl name='array' type-id='type-id-344' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Int rectBlockArray::n_elements -->
-        <var-decl name='n_elements' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='63' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='96'>
-        <!-- Int rectBlockArray::size -->
-        <var-decl name='size' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='64' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- rectBlockArray::rectBlockArray(Int) -->
-        <function-decl name='rectBlockArray' filepath='libnurbs/nurbtess/rectBlock.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'rectBlockArray*' -->
-          <parameter type-id='type-id-345' is-artificial='yes'/>
+      <member-function access='private'>
+        <!-- Int gridWrap::get_n_vlines() -->
+        <function-decl name='get_n_vlines' mangled-name='_ZN8gridWrap12get_n_vlinesEv' filepath='libnurbs/nurbtess/gridWrap.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridWrap*' -->
+          <parameter type-id='type-id-193' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real gridWrap::get_v_min() -->
+        <function-decl name='get_v_min' mangled-name='_ZN8gridWrap9get_v_minEv' filepath='libnurbs/nurbtess/gridWrap.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridWrap*' -->
+          <parameter type-id='type-id-193' is-artificial='yes'/>
+          <!-- typedef Real -->
+          <return type-id='type-id-246'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real gridWrap::get_v_max() -->
+        <function-decl name='get_v_max' mangled-name='_ZN8gridWrap9get_v_maxEv' filepath='libnurbs/nurbtess/gridWrap.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridWrap*' -->
+          <parameter type-id='type-id-193' is-artificial='yes'/>
+          <!-- typedef Real -->
+          <return type-id='type-id-246'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int gridWrap::get_n_ulines() -->
+        <function-decl name='get_n_ulines' mangled-name='_ZN8gridWrap12get_n_ulinesEv' filepath='libnurbs/nurbtess/gridWrap.h' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridWrap*' -->
+          <parameter type-id='type-id-193' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real gridWrap::get_u_max() -->
+        <function-decl name='get_u_max' mangled-name='_ZN8gridWrap9get_u_maxEv' filepath='libnurbs/nurbtess/gridWrap.h' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridWrap*' -->
+          <parameter type-id='type-id-193' is-artificial='yes'/>
+          <!-- typedef Real -->
+          <return type-id='type-id-246'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real gridWrap::get_u_min() -->
+        <function-decl name='get_u_min' mangled-name='_ZN8gridWrap9get_u_minEv' filepath='libnurbs/nurbtess/gridWrap.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridWrap*' -->
+          <parameter type-id='type-id-193' is-artificial='yes'/>
+          <!-- typedef Real -->
+          <return type-id='type-id-246'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real gridWrap::get_u_value(Int) -->
+        <function-decl name='get_u_value' mangled-name='_ZN8gridWrap11get_u_valueEi' filepath='libnurbs/nurbtess/gridWrap.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridWrap*' -->
+          <parameter type-id='type-id-193' is-artificial='yes'/>
           <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Real -->
+          <return type-id='type-id-246'/>
         </function-decl>
       </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- rectBlockArray::~rectBlockArray(int) -->
-        <function-decl name='~rectBlockArray' filepath='libnurbs/nurbtess/rectBlock.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'rectBlockArray*' -->
-          <parameter type-id='type-id-345' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+      <member-function access='private'>
+        <!-- Real gridWrap::get_v_value(Int) -->
+        <function-decl name='get_v_value' mangled-name='_ZN8gridWrap11get_v_valueEi' filepath='libnurbs/nurbtess/gridWrap.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridWrap*' -->
+          <parameter type-id='type-id-193' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Real -->
+          <return type-id='type-id-246'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void gridWrap::outputFanWithPoint(Int, Int, Int, Real*, primStream*) -->
+        <function-decl name='outputFanWithPoint' mangled-name='_ZN8gridWrap18outputFanWithPointEiiiPfP10primStream' filepath='libnurbs/nurbtess/gridWrap.h' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridWrap*' -->
+          <parameter type-id='type-id-193' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void gridWrap::draw() -->
+        <function-decl name='draw' mangled-name='_ZN8gridWrap4drawEv' filepath='libnurbs/nurbtess/gridWrap.h' line='91' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridWrap*' -->
+          <parameter type-id='type-id-193' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void gridWrap::print() -->
+        <function-decl name='print' mangled-name='_ZN8gridWrap5printEv' filepath='libnurbs/nurbtess/gridWrap.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridWrap*' -->
+          <parameter type-id='type-id-193' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- class gridBoundaryChain -->
-    <class-decl name='gridBoundaryChain' size-in-bits='320' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='96' column='1' id='type-id-346'>
+    <class-decl name='gridBoundaryChain' size-in-bits='320' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='96' column='1' id='type-id-279'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- gridWrap* gridBoundaryChain::grid -->
-        <var-decl name='grid' type-id='type-id-342' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='97' column='1'/>
+        <var-decl name='grid' type-id='type-id-193' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='97' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- Int gridBoundaryChain::firstVlineIndex -->
-        <var-decl name='firstVlineIndex' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='98' column='1'/>
+        <var-decl name='firstVlineIndex' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='98' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='96'>
         <!-- Int gridBoundaryChain::nVlines -->
-        <var-decl name='nVlines' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='99' column='1'/>
+        <var-decl name='nVlines' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='99' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
         <!-- Int* gridBoundaryChain::ulineIndices -->
-        <var-decl name='ulineIndices' type-id='type-id-323' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='100' column='1'/>
+        <var-decl name='ulineIndices' type-id='type-id-259' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='100' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='192'>
         <!-- Int* gridBoundaryChain::innerIndices -->
-        <var-decl name='innerIndices' type-id='type-id-323' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='101' column='1'/>
+        <var-decl name='innerIndices' type-id='type-id-259' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='101' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='256'>
         <!-- Real2* gridBoundaryChain::vertices -->
-        <var-decl name='vertices' type-id='type-id-319' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='105' column='1'/>
+        <var-decl name='vertices' type-id='type-id-251' visibility='default' filepath='libnurbs/nurbtess/gridWrap.h' line='105' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- gridBoundaryChain::gridBoundaryChain(gridWrap*, Int, Int, Int*, Int*) -->
         <function-decl name='gridBoundaryChain' filepath='libnurbs/nurbtess/gridWrap.h' line='108' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'gridBoundaryChain*' -->
-          <parameter type-id='type-id-340' is-artificial='yes'/>
+          <parameter type-id='type-id-280' is-artificial='yes'/>
           <!-- parameter of type 'gridWrap*' -->
-          <parameter type-id='type-id-342'/>
+          <parameter type-id='type-id-193'/>
           <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
+          <parameter type-id='type-id-248'/>
           <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
+          <parameter type-id='type-id-248'/>
           <!-- parameter of type 'Int*' -->
-          <parameter type-id='type-id-323'/>
+          <parameter type-id='type-id-259'/>
           <!-- parameter of type 'Int*' -->
-          <parameter type-id='type-id-323'/>
+          <parameter type-id='type-id-259'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- gridBoundaryChain::~gridBoundaryChain(int) -->
         <function-decl name='~gridBoundaryChain' filepath='libnurbs/nurbtess/gridWrap.h' line='110' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'gridBoundaryChain*' -->
-          <parameter type-id='type-id-340' is-artificial='yes'/>
+          <parameter type-id='type-id-280' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int gridBoundaryChain::getUlineIndex(Int) -->
+        <function-decl name='getUlineIndex' mangled-name='_ZN17gridBoundaryChain13getUlineIndexEi' filepath='libnurbs/nurbtess/gridWrap.h' line='120' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real* gridBoundaryChain::get_vertex(Int) -->
+        <function-decl name='get_vertex' mangled-name='_ZN17gridBoundaryChain10get_vertexEi' filepath='libnurbs/nurbtess/gridWrap.h' line='127' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- Real* -->
+          <return type-id='type-id-253'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real gridBoundaryChain::get_v_value(Int) -->
+        <function-decl name='get_v_value' mangled-name='_ZN17gridBoundaryChain11get_v_valueEi' filepath='libnurbs/nurbtess/gridWrap.h' line='122' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Real -->
+          <return type-id='type-id-246'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int gridBoundaryChain::lookfor(Real, Int, Int) -->
+        <function-decl name='lookfor' mangled-name='_ZN17gridBoundaryChain7lookforEfii' filepath='libnurbs/nurbtess/gridWrap.h' line='132' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void gridBoundaryChain::leftEndFan(Int, primStream*) -->
+        <function-decl name='leftEndFan' mangled-name='_ZN17gridBoundaryChain10leftEndFanEiP10primStream' filepath='libnurbs/nurbtess/gridWrap.h' line='129' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void gridBoundaryChain::rightEndFan(Int, primStream*) -->
+        <function-decl name='rightEndFan' mangled-name='_ZN17gridBoundaryChain11rightEndFanEiP10primStream' filepath='libnurbs/nurbtess/gridWrap.h' line='130' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'primStream*' -->
+          <parameter type-id='type-id-194'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void gridBoundaryChain::drawInner() -->
+        <function-decl name='drawInner' mangled-name='_ZN17gridBoundaryChain9drawInnerEv' filepath='libnurbs/nurbtess/gridWrap.h' line='134' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void gridBoundaryChain::draw() -->
+        <function-decl name='draw' mangled-name='_ZN17gridBoundaryChain4drawEv' filepath='libnurbs/nurbtess/gridWrap.h' line='133' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int gridBoundaryChain::getVlineIndex(Int) -->
+        <function-decl name='getVlineIndex' mangled-name='_ZN17gridBoundaryChain13getVlineIndexEi' filepath='libnurbs/nurbtess/gridWrap.h' line='119' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int gridBoundaryChain::getInnerIndex(Int) -->
+        <function-decl name='getInnerIndex' mangled-name='_ZN17gridBoundaryChain13getInnerIndexEi' filepath='libnurbs/nurbtess/gridWrap.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- gridWrap* gridBoundaryChain::getGrid() -->
+        <function-decl name='getGrid' mangled-name='_ZN17gridBoundaryChain7getGridEv' filepath='libnurbs/nurbtess/gridWrap.h' line='128' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- gridWrap* -->
+          <return type-id='type-id-193'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int gridBoundaryChain::get_nVlines() -->
+        <function-decl name='get_nVlines' mangled-name='_ZN17gridBoundaryChain11get_nVlinesEv' filepath='libnurbs/nurbtess/gridWrap.h' line='123' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real gridBoundaryChain::get_u_value(Int) -->
+        <function-decl name='get_u_value' mangled-name='_ZN17gridBoundaryChain11get_u_valueEi' filepath='libnurbs/nurbtess/gridWrap.h' line='121' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Real -->
+          <return type-id='type-id-246'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- class rectBlock -->
+    <class-decl name='rectBlock' size-in-bits='192' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='39' column='1' id='type-id-281'>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- Int rectBlock::upGridLineIndex -->
+        <var-decl name='upGridLineIndex' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='40' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='32'>
+        <!-- Int rectBlock::lowGridLineIndex -->
+        <var-decl name='lowGridLineIndex' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='41' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='64'>
+        <!-- Int* rectBlock::leftIndices -->
+        <var-decl name='leftIndices' type-id='type-id-259' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='42' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='128'>
+        <!-- Int* rectBlock::rightIndices -->
+        <var-decl name='rightIndices' type-id='type-id-259' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='43' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- rectBlock::rectBlock(gridBoundaryChain*, gridBoundaryChain*, Int, Int) -->
+        <function-decl name='rectBlock' filepath='libnurbs/nurbtess/rectBlock.h' line='46' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlock*' -->
+          <parameter type-id='type-id-282' is-artificial='yes'/>
+          <!-- parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280'/>
+          <!-- parameter of type 'gridBoundaryChain*' -->
+          <parameter type-id='type-id-280'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes'>
+        <!-- rectBlock::~rectBlock(int) -->
+        <function-decl name='~rectBlock' filepath='libnurbs/nurbtess/rectBlock.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlock*' -->
+          <parameter type-id='type-id-282' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int rectBlock::get_lowGridLineIndex() -->
+        <function-decl name='get_lowGridLineIndex' mangled-name='_ZN9rectBlock20get_lowGridLineIndexEv' filepath='libnurbs/nurbtess/rectBlock.h' line='50' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlock*' -->
+          <parameter type-id='type-id-282' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int rectBlock::get_upGridLineIndex() -->
+        <function-decl name='get_upGridLineIndex' mangled-name='_ZN9rectBlock19get_upGridLineIndexEv' filepath='libnurbs/nurbtess/rectBlock.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlock*' -->
+          <parameter type-id='type-id-282' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int* rectBlock::get_rightIndices() -->
+        <function-decl name='get_rightIndices' mangled-name='_ZN9rectBlock16get_rightIndicesEv' filepath='libnurbs/nurbtess/rectBlock.h' line='52' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlock*' -->
+          <parameter type-id='type-id-282' is-artificial='yes'/>
+          <!-- Int* -->
+          <return type-id='type-id-259'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int* rectBlock::get_leftIndices() -->
+        <function-decl name='get_leftIndices' mangled-name='_ZN9rectBlock15get_leftIndicesEv' filepath='libnurbs/nurbtess/rectBlock.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlock*' -->
+          <parameter type-id='type-id-282' is-artificial='yes'/>
+          <!-- Int* -->
+          <return type-id='type-id-259'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int rectBlock::num_quads() -->
+        <function-decl name='num_quads' mangled-name='_ZN9rectBlock9num_quadsEv' filepath='libnurbs/nurbtess/rectBlock.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlock*' -->
+          <parameter type-id='type-id-282' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void rectBlock::draw(Real*, Real*) -->
+        <function-decl name='draw' mangled-name='_ZN9rectBlock4drawEPfS0_' filepath='libnurbs/nurbtess/rectBlock.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlock*' -->
+          <parameter type-id='type-id-282' is-artificial='yes'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void rectBlock::print() -->
+        <function-decl name='print' mangled-name='_ZN9rectBlock5printEv' filepath='libnurbs/nurbtess/rectBlock.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlock*' -->
+          <parameter type-id='type-id-282' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- class rectBlockArray -->
+    <class-decl name='rectBlockArray' size-in-bits='128' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='61' column='1' id='type-id-283'>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- rectBlock** rectBlockArray::array -->
+        <var-decl name='array' type-id='type-id-284' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='62' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='64'>
+        <!-- Int rectBlockArray::n_elements -->
+        <var-decl name='n_elements' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='63' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='96'>
+        <!-- Int rectBlockArray::size -->
+        <var-decl name='size' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/rectBlock.h' line='64' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- rectBlockArray::rectBlockArray(Int) -->
+        <function-decl name='rectBlockArray' filepath='libnurbs/nurbtess/rectBlock.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlockArray*' -->
+          <parameter type-id='type-id-192' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes'>
+        <!-- rectBlockArray::~rectBlockArray(int) -->
+        <function-decl name='~rectBlockArray' filepath='libnurbs/nurbtess/rectBlock.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlockArray*' -->
+          <parameter type-id='type-id-192' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- rectBlock* rectBlockArray::get_element(Int) -->
+        <function-decl name='get_element' mangled-name='_ZN14rectBlockArray11get_elementEi' filepath='libnurbs/nurbtess/rectBlock.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlockArray*' -->
+          <parameter type-id='type-id-192' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- rectBlock* -->
+          <return type-id='type-id-282'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int rectBlockArray::get_n_elements() -->
+        <function-decl name='get_n_elements' mangled-name='_ZN14rectBlockArray14get_n_elementsEv' filepath='libnurbs/nurbtess/rectBlock.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlockArray*' -->
+          <parameter type-id='type-id-192' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int rectBlockArray::num_quads() -->
+        <function-decl name='num_quads' mangled-name='_ZN14rectBlockArray9num_quadsEv' filepath='libnurbs/nurbtess/rectBlock.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlockArray*' -->
+          <parameter type-id='type-id-192' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void rectBlockArray::insert(rectBlock*) -->
+        <function-decl name='insert' mangled-name='_ZN14rectBlockArray6insertEP9rectBlock' filepath='libnurbs/nurbtess/rectBlock.h' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlockArray*' -->
+          <parameter type-id='type-id-192' is-artificial='yes'/>
+          <!-- parameter of type 'rectBlock*' -->
+          <parameter type-id='type-id-282'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void rectBlockArray::draw(Real*, Real*) -->
+        <function-decl name='draw' mangled-name='_ZN14rectBlockArray4drawEPfS0_' filepath='libnurbs/nurbtess/rectBlock.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlockArray*' -->
+          <parameter type-id='type-id-192' is-artificial='yes'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void rectBlockArray::print() -->
+        <function-decl name='print' mangled-name='_ZN14rectBlockArray5printEv' filepath='libnurbs/nurbtess/rectBlock.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'rectBlockArray*' -->
+          <parameter type-id='type-id-192' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- Slicer* -->
-    <pointer-type-def type-id='type-id-120' size-in-bits='64' id='type-id-162'/>
-    <!-- Slicer* const -->
-    <qualified-type-def type-id='type-id-162' const='yes' id='type-id-347'/>
-    <!-- TrimRegion* const -->
-    <qualified-type-def type-id='type-id-205' const='yes' id='type-id-348'/>
+    <pointer-type-def type-id='type-id-171' size-in-bits='64' id='type-id-190'/>
     <!-- gridBoundaryChain* -->
-    <pointer-type-def type-id='type-id-346' size-in-bits='64' id='type-id-340'/>
+    <pointer-type-def type-id='type-id-279' size-in-bits='64' id='type-id-280'/>
     <!-- gridWrap* -->
-    <pointer-type-def type-id='type-id-341' size-in-bits='64' id='type-id-342'/>
-    <!-- gridWrap* const -->
-    <qualified-type-def type-id='type-id-342' const='yes' id='type-id-349'/>
-    <!-- primStream* const -->
-    <qualified-type-def type-id='type-id-325' const='yes' id='type-id-350'/>
+    <pointer-type-def type-id='type-id-278' size-in-bits='64' id='type-id-193'/>
     <!-- rectBlock* -->
-    <pointer-type-def type-id='type-id-338' size-in-bits='64' id='type-id-339'/>
-    <!-- rectBlock* const -->
-    <qualified-type-def type-id='type-id-339' const='yes' id='type-id-351'/>
+    <pointer-type-def type-id='type-id-281' size-in-bits='64' id='type-id-282'/>
     <!-- rectBlock** -->
-    <pointer-type-def type-id='type-id-339' size-in-bits='64' id='type-id-344'/>
+    <pointer-type-def type-id='type-id-282' size-in-bits='64' id='type-id-284'/>
     <!-- rectBlockArray* -->
-    <pointer-type-def type-id='type-id-343' size-in-bits='64' id='type-id-345'/>
-    <!-- rectBlockArray* const -->
-    <qualified-type-def type-id='type-id-345' const='yes' id='type-id-352'/>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/sorter.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- Sorter* const -->
-    <qualified-type-def type-id='type-id-202' const='yes' id='type-id-353'/>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/subdivider.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- Patchlist& -->
-    <qualified-type-def type-id='type-id-259' id='type-id-354'/>
+    <pointer-type-def type-id='type-id-283' size-in-bits='64' id='type-id-192'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/tobezier.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
+    <!-- typedef Quilt* Quilt_ptr -->
+    <typedef-decl name='Quilt_ptr' type-id='type-id-148' filepath='libnurbs/internals/quilt.h' line='90' column='1' id='type-id-285'/>
+    <!-- struct Breakpt -->
+    <class-decl name='Breakpt' size-in-bits='96' is-struct='yes' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='48' column='1' id='type-id-286'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- Knot Breakpt::value -->
+        <var-decl name='value' type-id='type-id-226' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='49' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <!-- int Breakpt::multi -->
+        <var-decl name='multi' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='50' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- int Breakpt::def -->
+        <var-decl name='def' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='51' column='1'/>
+      </data-member>
+    </class-decl>
     <!-- struct Knotspec -->
-    <class-decl name='Knotspec' size-in-bits='1152' is-struct='yes' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='54' column='1' id='type-id-355'>
+    <class-decl name='Knotspec' size-in-bits='1152' is-struct='yes' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='54' column='1' id='type-id-287'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- long int Knotspec::order -->
-        <var-decl name='order' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='55' column='1'/>
+        <var-decl name='order' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='55' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- Knot_ptr Knotspec::inkbegin -->
-        <var-decl name='inkbegin' type-id='type-id-356' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='56' column='1'/>
+        <var-decl name='inkbegin' type-id='type-id-288' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='56' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- Knot_ptr Knotspec::inkend -->
-        <var-decl name='inkend' type-id='type-id-356' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='57' column='1'/>
+        <var-decl name='inkend' type-id='type-id-288' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='57' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- Knot_ptr Knotspec::outkbegin -->
-        <var-decl name='outkbegin' type-id='type-id-356' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='58' column='1'/>
+        <var-decl name='outkbegin' type-id='type-id-288' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='58' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- Knot_ptr Knotspec::outkend -->
-        <var-decl name='outkend' type-id='type-id-356' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='59' column='1'/>
+        <var-decl name='outkend' type-id='type-id-288' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='59' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
         <!-- Knot_ptr Knotspec::kleft -->
-        <var-decl name='kleft' type-id='type-id-356' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='60' column='1'/>
+        <var-decl name='kleft' type-id='type-id-288' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='60' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='384'>
         <!-- Knot_ptr Knotspec::kright -->
-        <var-decl name='kright' type-id='type-id-356' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='61' column='1'/>
+        <var-decl name='kright' type-id='type-id-288' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='61' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='448'>
         <!-- Knot_ptr Knotspec::kfirst -->
-        <var-decl name='kfirst' type-id='type-id-356' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='62' column='1'/>
+        <var-decl name='kfirst' type-id='type-id-288' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='62' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='512'>
         <!-- Knot_ptr Knotspec::klast -->
-        <var-decl name='klast' type-id='type-id-356' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='63' column='1'/>
+        <var-decl name='klast' type-id='type-id-288' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='63' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='576'>
         <!-- Knot_ptr Knotspec::sbegin -->
-        <var-decl name='sbegin' type-id='type-id-356' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='64' column='1'/>
+        <var-decl name='sbegin' type-id='type-id-288' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='64' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='640'>
         <!-- Breakpt* Knotspec::bbegin -->
-        <var-decl name='bbegin' type-id='type-id-357' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='65' column='1'/>
+        <var-decl name='bbegin' type-id='type-id-289' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='65' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='704'>
         <!-- Breakpt* Knotspec::bend -->
-        <var-decl name='bend' type-id='type-id-357' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='66' column='1'/>
+        <var-decl name='bend' type-id='type-id-289' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='66' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='768'>
         <!-- int Knotspec::ncoords -->
-        <var-decl name='ncoords' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='67' column='1'/>
+        <var-decl name='ncoords' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='67' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='800'>
         <!-- int Knotspec::prestride -->
-        <var-decl name='prestride' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='68' column='1'/>
+        <var-decl name='prestride' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='68' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='832'>
         <!-- int Knotspec::poststride -->
-        <var-decl name='poststride' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='69' column='1'/>
+        <var-decl name='poststride' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='69' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='864'>
         <!-- int Knotspec::preoffset -->
-        <var-decl name='preoffset' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='70' column='1'/>
+        <var-decl name='preoffset' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='70' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='896'>
         <!-- int Knotspec::postoffset -->
-        <var-decl name='postoffset' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='71' column='1'/>
+        <var-decl name='postoffset' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='71' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='928'>
         <!-- int Knotspec::prewidth -->
-        <var-decl name='prewidth' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='72' column='1'/>
+        <var-decl name='prewidth' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='72' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='960'>
         <!-- int Knotspec::postwidth -->
-        <var-decl name='postwidth' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='73' column='1'/>
+        <var-decl name='postwidth' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='73' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='992'>
         <!-- int Knotspec::istransformed -->
-        <var-decl name='istransformed' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='74' column='1'/>
+        <var-decl name='istransformed' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='74' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1024'>
         <!-- Knotspec* Knotspec::next -->
-        <var-decl name='next' type-id='type-id-358' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='75' column='1'/>
+        <var-decl name='next' type-id='type-id-290' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='75' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1088'>
         <!-- Knotspec* Knotspec::kspectotrans -->
-        <var-decl name='kspectotrans' type-id='type-id-358' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='76' column='1'/>
+        <var-decl name='kspectotrans' type-id='type-id-290' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='76' column='1'/>
       </data-member>
       <member-function access='public' constructor='yes'>
         <!-- Knotspec::Knotspec() -->
         <function-decl name='Knotspec' filepath='libnurbs/internals/tobezier.cc' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Knotspec*' -->
-          <parameter type-id='type-id-358' is-artificial='yes'/>
+          <parameter type-id='type-id-290' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' destructor='yes'>
         <!-- Knotspec::~Knotspec(int) -->
         <function-decl name='~Knotspec' filepath='libnurbs/internals/tobezier.cc' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Knotspec*' -->
-          <parameter type-id='type-id-358' is-artificial='yes'/>
+          <parameter type-id='type-id-290' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotspec::showpts(REAL*) -->
+        <function-decl name='showpts' mangled-name='_ZN8Knotspec7showptsEPf' filepath='libnurbs/internals/tobezier.cc' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotspec*' -->
+          <parameter type-id='type-id-290' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotspec::factors() -->
+        <function-decl name='factors' mangled-name='_ZN8Knotspec7factorsEv' filepath='libnurbs/internals/tobezier.cc' line='80' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotspec*' -->
+          <parameter type-id='type-id-290' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotspec::pt_io_copy(REAL*, float*) -->
+        <function-decl name='pt_io_copy' mangled-name='_ZN8Knotspec10pt_io_copyEPfS0_' filepath='libnurbs/internals/tobezier.cc' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotspec*' -->
+          <parameter type-id='type-id-290' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotspec::copy(float*, REAL*) -->
+        <function-decl name='copy' mangled-name='_ZN8Knotspec4copyEPfS0_' filepath='libnurbs/internals/tobezier.cc' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotspec*' -->
+          <parameter type-id='type-id-290' is-artificial='yes'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotspec::pt_oo_sum(REAL*, REAL*, REAL*, Knot, Knot) -->
+        <function-decl name='pt_oo_sum' mangled-name='_ZN8Knotspec9pt_oo_sumEPfS0_S0_ff' filepath='libnurbs/internals/tobezier.cc' line='92' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotspec*' -->
+          <parameter type-id='type-id-290' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'typedef Knot' -->
+          <parameter type-id='type-id-226'/>
+          <!-- parameter of type 'typedef Knot' -->
+          <parameter type-id='type-id-226'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotspec::pt_oo_copy(REAL*, REAL*) -->
+        <function-decl name='pt_oo_copy' mangled-name='_ZN8Knotspec10pt_oo_copyEPfS0_' filepath='libnurbs/internals/tobezier.cc' line='91' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotspec*' -->
+          <parameter type-id='type-id-290' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotspec::insert(REAL*) -->
+        <function-decl name='insert' mangled-name='_ZN8Knotspec6insertEPf' filepath='libnurbs/internals/tobezier.cc' line='81' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotspec*' -->
+          <parameter type-id='type-id-290' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotspec::transform(REAL*) -->
+        <function-decl name='transform' mangled-name='_ZN8Knotspec9transformEPf' filepath='libnurbs/internals/tobezier.cc' line='87' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotspec*' -->
+          <parameter type-id='type-id-290' is-artificial='yes'/>
+          <!-- parameter of type 'REAL*' -->
+          <parameter type-id='type-id-22'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotspec::knots() -->
+        <function-decl name='knots' mangled-name='_ZN8Knotspec5knotsEv' filepath='libnurbs/internals/tobezier.cc' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotspec*' -->
+          <parameter type-id='type-id-290' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotspec::breakpoints() -->
+        <function-decl name='breakpoints' mangled-name='_ZN8Knotspec11breakpointsEv' filepath='libnurbs/internals/tobezier.cc' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotspec*' -->
+          <parameter type-id='type-id-290' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotspec::select() -->
+        <function-decl name='select' mangled-name='_ZN8Knotspec6selectEv' filepath='libnurbs/internals/tobezier.cc' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotspec*' -->
+          <parameter type-id='type-id-290' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Knotspec::preselect() -->
+        <function-decl name='preselect' mangled-name='_ZN8Knotspec9preselectEv' filepath='libnurbs/internals/tobezier.cc' line='82' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Knotspec*' -->
+          <parameter type-id='type-id-290' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- typedef REAL* Knot_ptr -->
-    <typedef-decl name='Knot_ptr' type-id='type-id-16' filepath='libnurbs/internals/types.h' line='45' column='1' id='type-id-356'/>
-    <!-- struct Breakpt -->
-    <class-decl name='Breakpt' size-in-bits='96' is-struct='yes' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='48' column='1' id='type-id-359'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- Knot Breakpt::value -->
-        <var-decl name='value' type-id='type-id-218' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='49' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <!-- int Breakpt::multi -->
-        <var-decl name='multi' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='50' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- int Breakpt::def -->
-        <var-decl name='def' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='51' column='1'/>
-      </data-member>
-    </class-decl>
     <!-- struct Splinespec -->
-    <class-decl name='Splinespec' size-in-bits='192' is-struct='yes' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='95' column='1' id='type-id-360'>
+    <class-decl name='Splinespec' size-in-bits='192' is-struct='yes' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='95' column='1' id='type-id-291'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- Knotspec* Splinespec::kspec -->
-        <var-decl name='kspec' type-id='type-id-358' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='98' column='1'/>
+        <var-decl name='kspec' type-id='type-id-290' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='98' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- int Splinespec::dim -->
-        <var-decl name='dim' type-id='type-id-11' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='99' column='1'/>
+        <var-decl name='dim' type-id='type-id-8' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='99' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- REAL* Splinespec::outcpts -->
-        <var-decl name='outcpts' type-id='type-id-16' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='100' column='1'/>
+        <var-decl name='outcpts' type-id='type-id-22' visibility='default' filepath='libnurbs/internals/tobezier.cc' line='100' column='1'/>
       </data-member>
       <member-function access='public' constructor='yes'>
         <!-- Splinespec::Splinespec(int) -->
         <function-decl name='Splinespec' filepath='libnurbs/internals/tobezier.cc' line='96' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Splinespec*' -->
-          <parameter type-id='type-id-361' is-artificial='yes'/>
+          <parameter type-id='type-id-292' is-artificial='yes'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='public' destructor='yes'>
         <!-- Splinespec::~Splinespec(int) -->
         <function-decl name='~Splinespec' filepath='libnurbs/internals/tobezier.cc' line='97' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Splinespec*' -->
-          <parameter type-id='type-id-361' is-artificial='yes'/>
+          <parameter type-id='type-id-292' is-artificial='yes'/>
           <!-- parameter of type 'int' -->
-          <parameter type-id='type-id-11'/>
+          <parameter type-id='type-id-8'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Splinespec::copy(float*) -->
+        <function-decl name='copy' mangled-name='_ZN10Splinespec4copyEPf' filepath='libnurbs/internals/tobezier.cc' line='107' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Splinespec*' -->
+          <parameter type-id='type-id-292' is-artificial='yes'/>
+          <!-- parameter of type 'float*' -->
+          <parameter type-id='type-id-49'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Splinespec::transform() -->
+        <function-decl name='transform' mangled-name='_ZN10Splinespec9transformEv' filepath='libnurbs/internals/tobezier.cc' line='108' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Splinespec*' -->
+          <parameter type-id='type-id-292' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Splinespec::select() -->
+        <function-decl name='select' mangled-name='_ZN10Splinespec6selectEv' filepath='libnurbs/internals/tobezier.cc' line='104' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Splinespec*' -->
+          <parameter type-id='type-id-292' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Splinespec::setupquilt(Quilt_ptr) -->
+        <function-decl name='setupquilt' mangled-name='_ZN10Splinespec10setupquiltEP5Quilt' filepath='libnurbs/internals/tobezier.cc' line='106' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Splinespec*' -->
+          <parameter type-id='type-id-292' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Quilt_ptr' -->
+          <parameter type-id='type-id-285'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Splinespec::layout(long int) -->
+        <function-decl name='layout' mangled-name='_ZN10Splinespec6layoutEl' filepath='libnurbs/internals/tobezier.cc' line='105' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Splinespec*' -->
+          <parameter type-id='type-id-292' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Splinespec::kspecinit(Knotvector&, Knotvector&) -->
+        <function-decl name='kspecinit' mangled-name='_ZN10Splinespec9kspecinitER10KnotvectorS1_' filepath='libnurbs/internals/tobezier.cc' line='103' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Splinespec*' -->
+          <parameter type-id='type-id-292' is-artificial='yes'/>
+          <!-- parameter of type 'Knotvector&' -->
+          <parameter type-id='type-id-168'/>
+          <!-- parameter of type 'Knotvector&' -->
+          <parameter type-id='type-id-168'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='public'>
+        <!-- void Splinespec::kspecinit(Knotvector&) -->
+        <function-decl name='kspecinit' mangled-name='_ZN10Splinespec9kspecinitER10Knotvector' filepath='libnurbs/internals/tobezier.cc' line='102' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Splinespec*' -->
+          <parameter type-id='type-id-292' is-artificial='yes'/>
+          <!-- parameter of type 'Knotvector&' -->
+          <parameter type-id='type-id-168'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
-    <!-- typedef Quilt* Quilt_ptr -->
-    <typedef-decl name='Quilt_ptr' type-id='type-id-125' filepath='libnurbs/internals/quilt.h' line='90' column='1' id='type-id-362'/>
+    <!-- typedef REAL* Knot_ptr -->
+    <typedef-decl name='Knot_ptr' type-id='type-id-22' filepath='libnurbs/internals/types.h' line='45' column='1' id='type-id-288'/>
     <!-- Breakpt* -->
-    <pointer-type-def type-id='type-id-359' size-in-bits='64' id='type-id-357'/>
+    <pointer-type-def type-id='type-id-286' size-in-bits='64' id='type-id-289'/>
     <!-- Knotspec* -->
-    <pointer-type-def type-id='type-id-355' size-in-bits='64' id='type-id-358'/>
-    <!-- Knotspec* const -->
-    <qualified-type-def type-id='type-id-358' const='yes' id='type-id-363'/>
-    <!-- Knotvector& -->
-    <qualified-type-def type-id='type-id-296' id='type-id-364'/>
+    <pointer-type-def type-id='type-id-287' size-in-bits='64' id='type-id-290'/>
     <!-- Splinespec* -->
-    <pointer-type-def type-id='type-id-360' size-in-bits='64' id='type-id-361'/>
-    <!-- Splinespec* const -->
-    <qualified-type-def type-id='type-id-361' const='yes' id='type-id-365'/>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/trimline.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- Jarcloc* const -->
-    <qualified-type-def type-id='type-id-289' const='yes' id='type-id-366'/>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/trimvertpool.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- TrimVertexPool* const -->
-    <qualified-type-def type-id='type-id-131' const='yes' id='type-id-367'/>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/internals/uarray.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- Uarray* const -->
-    <qualified-type-def type-id='type-id-214' const='yes' id='type-id-368'/>
+    <pointer-type-def type-id='type-id-291' size-in-bits='64' id='type-id-292'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/internals/varray.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- REAL[1000] -->
-    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='32000' id='type-id-369'>
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='32000' id='type-id-293'>
       <!-- <anonymous range>[1000] -->
-      <subrange length='1000' type-id='type-id-3' id='type-id-370'/>
+      <subrange length='1000' type-id='type-id-3' id='type-id-294'/>
     </array-type-def>
     <!-- long int[1000] -->
-    <array-type-def dimensions='1' type-id='type-id-15' size-in-bits='64000' id='type-id-371'>
+    <array-type-def dimensions='1' type-id='type-id-38' size-in-bits='64000' id='type-id-295'>
       <!-- <anonymous range>[1000] -->
-      <subrange length='1000' type-id='type-id-3' id='type-id-370'/>
+      <subrange length='1000' type-id='type-id-3' id='type-id-294'/>
     </array-type-def>
     <!-- class Varray -->
-    <class-decl name='Varray' size-in-bits='96192' visibility='default' filepath='libnurbs/internals/varray.h' line='43' column='1' id='type-id-372'>
+    <class-decl name='Varray' size-in-bits='96192' visibility='default' filepath='libnurbs/internals/varray.h' line='43' column='1' id='type-id-296'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- REAL* Varray::varray -->
-        <var-decl name='varray' type-id='type-id-16' visibility='default' filepath='libnurbs/internals/varray.h' line='48' column='1'/>
+        <var-decl name='varray' type-id='type-id-22' visibility='default' filepath='libnurbs/internals/varray.h' line='48' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- REAL Varray::vval[1000] -->
-        <var-decl name='vval' type-id='type-id-369' visibility='default' filepath='libnurbs/internals/varray.h' line='49' column='1'/>
+        <var-decl name='vval' type-id='type-id-293' visibility='default' filepath='libnurbs/internals/varray.h' line='49' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='32064'>
         <!-- long int Varray::voffset[1000] -->
-        <var-decl name='voffset' type-id='type-id-371' visibility='default' filepath='libnurbs/internals/varray.h' line='50' column='1'/>
+        <var-decl name='voffset' type-id='type-id-295' visibility='default' filepath='libnurbs/internals/varray.h' line='50' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='96064'>
         <!-- long int Varray::numquads -->
-        <var-decl name='numquads' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/varray.h' line='51' column='1'/>
+        <var-decl name='numquads' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/varray.h' line='51' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='96128'>
         <!-- long int Varray::size -->
-        <var-decl name='size' type-id='type-id-15' visibility='default' filepath='libnurbs/internals/varray.h' line='54' column='1'/>
+        <var-decl name='size' type-id='type-id-38' visibility='default' filepath='libnurbs/internals/varray.h' line='54' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- Varray::Varray() -->
         <function-decl name='Varray' filepath='libnurbs/internals/varray.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Varray*' -->
-          <parameter type-id='type-id-373' is-artificial='yes'/>
+          <parameter type-id='type-id-297' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- Varray::~Varray(int) -->
         <function-decl name='~Varray' filepath='libnurbs/internals/varray.h' line='46' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'Varray*' -->
-          <parameter type-id='type-id-373' is-artificial='yes'/>
+          <parameter type-id='type-id-297' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Varray::append(REAL) -->
+        <function-decl name='append' mangled-name='_ZN6Varray6appendEf' filepath='libnurbs/internals/varray.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Varray*' -->
+          <parameter type-id='type-id-297' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Varray::update(Arc*, long int*, REAL) -->
+        <function-decl name='update' mangled-name='_ZN6Varray6updateEP3ArcPlf' filepath='libnurbs/internals/varray.h' line='55' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Varray*' -->
+          <parameter type-id='type-id-297' is-artificial='yes'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111'/>
+          <!-- parameter of type 'long int*' -->
+          <parameter type-id='type-id-298'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void Varray::grow(long int) -->
+        <function-decl name='grow' mangled-name='_ZN6Varray4growEl' filepath='libnurbs/internals/varray.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Varray*' -->
+          <parameter type-id='type-id-297' is-artificial='yes'/>
+          <!-- parameter of type 'long int' -->
+          <parameter type-id='type-id-38'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- long int Varray::init(REAL, Arc*, Arc*) -->
+        <function-decl name='init' mangled-name='_ZN6Varray4initEfP3ArcS1_' filepath='libnurbs/internals/varray.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'Varray*' -->
+          <parameter type-id='type-id-297' is-artificial='yes'/>
+          <!-- parameter of type 'typedef REAL' -->
+          <parameter type-id='type-id-1'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111'/>
+          <!-- parameter of type 'Arc*' -->
+          <parameter type-id='type-id-111'/>
+          <!-- long int -->
+          <return type-id='type-id-38'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- Varray* -->
-    <pointer-type-def type-id='type-id-372' size-in-bits='64' id='type-id-373'/>
-    <!-- Varray* const -->
-    <qualified-type-def type-id='type-id-373' const='yes' id='type-id-374'/>
+    <pointer-type-def type-id='type-id-296' size-in-bits='64' id='type-id-297'/>
     <!-- long int* -->
-    <pointer-type-def type-id='type-id-15' size-in-bits='64' id='type-id-375'/>
+    <pointer-type-def type-id='type-id-38' size-in-bits='64' id='type-id-298'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/nurbtess/directedLine.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- short int -->
-    <type-decl name='short int' size-in-bits='16' id='type-id-376'/>
-    <!-- class sampledLine -->
-    <class-decl name='sampledLine' size-in-bits='192' visibility='default' filepath='libnurbs/nurbtess/sampledLine.h' line='38' column='1' id='type-id-377'>
-      <data-member access='private' layout-offset-in-bits='0'>
-        <!-- Int sampledLine::npoints -->
-        <var-decl name='npoints' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/sampledLine.h' line='39' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='64'>
-        <!-- Real2* sampledLine::points -->
-        <var-decl name='points' type-id='type-id-319' visibility='default' filepath='libnurbs/nurbtess/sampledLine.h' line='40' column='1'/>
-      </data-member>
-      <data-member access='private' layout-offset-in-bits='128'>
-        <!-- sampledLine* sampledLine::next -->
-        <var-decl name='next' type-id='type-id-378' visibility='default' filepath='libnurbs/nurbtess/sampledLine.h' line='65' column='1'/>
-      </data-member>
-      <member-function access='private' constructor='yes'>
-        <!-- sampledLine::sampledLine(Int) -->
-        <function-decl name='sampledLine' filepath='libnurbs/nurbtess/sampledLine.h' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'sampledLine*' -->
-          <parameter type-id='type-id-378' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- sampledLine::sampledLine(Int, Real[2]*) -->
-        <function-decl name='sampledLine' filepath='libnurbs/nurbtess/sampledLine.h' line='44' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'sampledLine*' -->
-          <parameter type-id='type-id-378' is-artificial='yes'/>
-          <!-- parameter of type 'typedef Int' -->
-          <parameter type-id='type-id-313'/>
-          <!-- parameter of type 'Real[2]*' -->
-          <parameter type-id='type-id-317'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- sampledLine::sampledLine(Real*, Real*) -->
-        <function-decl name='sampledLine' filepath='libnurbs/nurbtess/sampledLine.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'sampledLine*' -->
-          <parameter type-id='type-id-378' is-artificial='yes'/>
-          <!-- parameter of type 'Real*' -->
-          <parameter type-id='type-id-324'/>
-          <!-- parameter of type 'Real*' -->
-          <parameter type-id='type-id-324'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' constructor='yes'>
-        <!-- sampledLine::sampledLine() -->
-        <function-decl name='sampledLine' filepath='libnurbs/nurbtess/sampledLine.h' line='46' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'sampledLine*' -->
-          <parameter type-id='type-id-378' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-      <member-function access='private' destructor='yes'>
-        <!-- sampledLine::~sampledLine(int) -->
-        <function-decl name='~sampledLine' filepath='libnurbs/nurbtess/sampledLine.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
-          <!-- implicit parameter of type 'sampledLine*' -->
-          <parameter type-id='type-id-378' is-artificial='yes'/>
-          <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
-          <!-- void -->
-          <return type-id='type-id-12'/>
-        </function-decl>
-      </member-function>
-    </class-decl>
+    <type-decl name='short int' size-in-bits='16' id='type-id-299'/>
     <!-- class directedLine -->
-    <class-decl name='directedLine' size-in-bits='448' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='41' column='1' id='type-id-379'>
+    <class-decl name='directedLine' size-in-bits='448' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='41' column='1' id='type-id-300'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- short int directedLine::direction -->
-        <var-decl name='direction' type-id='type-id-376' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='42' column='1'/>
+        <var-decl name='direction' type-id='type-id-299' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='42' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- sampledLine* directedLine::sline -->
-        <var-decl name='sline' type-id='type-id-378' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='43' column='1'/>
+        <var-decl name='sline' type-id='type-id-301' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='43' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
         <!-- directedLine* directedLine::next -->
-        <var-decl name='next' type-id='type-id-380' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='44' column='1'/>
+        <var-decl name='next' type-id='type-id-302' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='44' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='192'>
         <!-- directedLine* directedLine::prev -->
-        <var-decl name='prev' type-id='type-id-380' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='45' column='1'/>
+        <var-decl name='prev' type-id='type-id-302' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='45' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='256'>
         <!-- directedLine* directedLine::nextPolygon -->
-        <var-decl name='nextPolygon' type-id='type-id-380' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='50' column='1'/>
+        <var-decl name='nextPolygon' type-id='type-id-302' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='50' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='320'>
         <!-- Int directedLine::rootBit -->
-        <var-decl name='rootBit' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='55' column='1'/>
+        <var-decl name='rootBit' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='55' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='384'>
         <!-- directedLine* directedLine::rootLink -->
-        <var-decl name='rootLink' type-id='type-id-380' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='58' column='1'/>
+        <var-decl name='rootLink' type-id='type-id-302' visibility='default' filepath='libnurbs/nurbtess/directedLine.h' line='58' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- directedLine::directedLine(short int, sampledLine*) -->
         <function-decl name='directedLine' filepath='libnurbs/nurbtess/directedLine.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'directedLine*' -->
-          <parameter type-id='type-id-380' is-artificial='yes'/>
+          <parameter type-id='type-id-302' is-artificial='yes'/>
           <!-- parameter of type 'short int' -->
-          <parameter type-id='type-id-376'/>
+          <parameter type-id='type-id-299'/>
           <!-- parameter of type 'sampledLine*' -->
-          <parameter type-id='type-id-378'/>
+          <parameter type-id='type-id-301'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
         <!-- directedLine::directedLine() -->
         <function-decl name='directedLine' filepath='libnurbs/nurbtess/directedLine.h' line='64' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'directedLine*' -->
-          <parameter type-id='type-id-380' is-artificial='yes'/>
+          <parameter type-id='type-id-302' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- directedLine::~directedLine(int) -->
         <function-decl name='~directedLine' filepath='libnurbs/nurbtess/directedLine.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'directedLine*' -->
-          <parameter type-id='type-id-380' is-artificial='yes'/>
+          <parameter type-id='type-id-302' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int directedLine::numEdges() -->
+        <function-decl name='numEdges' mangled-name='_ZN12directedLine8numEdgesEv' filepath='libnurbs/nurbtess/directedLine.h' line='114' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real* directedLine::head() -->
+        <function-decl name='head' mangled-name='_ZN12directedLine4headEv' filepath='libnurbs/nurbtess/directedLine.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- Real* -->
+          <return type-id='type-id-253'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real* directedLine::tail() -->
+        <function-decl name='tail' mangled-name='_ZN12directedLine4tailEv' filepath='libnurbs/nurbtess/directedLine.h' line='70' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- Real* -->
+          <return type-id='type-id-253'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::setRootBit() -->
+        <function-decl name='setRootBit' mangled-name='_ZN12directedLine10setRootBitEv' filepath='libnurbs/nurbtess/directedLine.h' line='151' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::rootLinkSet(directedLine*) -->
+        <function-decl name='rootLinkSet' mangled-name='_ZN12directedLine11rootLinkSetEPS_' filepath='libnurbs/nurbtess/directedLine.h' line='155' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::insert(directedLine*) -->
+        <function-decl name='insert' mangled-name='_ZN12directedLine6insertEPS_' filepath='libnurbs/nurbtess/directedLine.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* directedLine::insertPolygon(directedLine*) -->
+        <function-decl name='insertPolygon' mangled-name='_ZN12directedLine13insertPolygonEPS_' filepath='libnurbs/nurbtess/directedLine.h' line='132' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int directedLine::numPolygons() -->
+        <function-decl name='numPolygons' mangled-name='_ZN12directedLine11numPolygonsEv' filepath='libnurbs/nurbtess/directedLine.h' line='116' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int directedLine::get_npoints() -->
+        <function-decl name='get_npoints' mangled-name='_ZN12directedLine11get_npointsEv' filepath='libnurbs/nurbtess/directedLine.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real* directedLine::getVertex(Int) -->
+        <function-decl name='getVertex' mangled-name='_ZN12directedLine9getVertexEi' filepath='libnurbs/nurbtess/directedLine.h' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- Real* -->
+          <return type-id='type-id-253'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int directedLine::numEdgesAllPolygons() -->
+        <function-decl name='numEdgesAllPolygons' mangled-name='_ZN12directedLine19numEdgesAllPolygonsEv' filepath='libnurbs/nurbtess/directedLine.h' line='115' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int directedLine::toArraySinglePolygon(directedLine**, Int) -->
+        <function-decl name='toArraySinglePolygon' mangled-name='_ZN12directedLine20toArraySinglePolygonEPPS_i' filepath='libnurbs/nurbtess/directedLine.h' line='135' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine**' -->
+          <parameter type-id='type-id-303'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::resetRootBit() -->
+        <function-decl name='resetRootBit' mangled-name='_ZN12directedLine12resetRootBitEv' filepath='libnurbs/nurbtess/directedLine.h' line='152' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* directedLine::getNext() -->
+        <function-decl name='getNext' mangled-name='_ZN12directedLine7getNextEv' filepath='libnurbs/nurbtess/directedLine.h' line='74' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::init(short int, sampledLine*) -->
+        <function-decl name='init' mangled-name='_ZN12directedLine4initEsP11sampledLine' filepath='libnurbs/nurbtess/directedLine.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'short int' -->
+          <parameter type-id='type-id-299'/>
+          <!-- parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- short int directedLine::isConnected() -->
+        <function-decl name='isConnected' mangled-name='_ZN12directedLine11isConnectedEv' filepath='libnurbs/nurbtess/directedLine.h' line='121' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- short int -->
+          <return type-id='type-id-299'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- short int directedLine::isPolygon() -->
+        <function-decl name='isPolygon' mangled-name='_ZN12directedLine9isPolygonEv' filepath='libnurbs/nurbtess/directedLine.h' line='104' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- short int -->
+          <return type-id='type-id-299'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int directedLine::compInY(directedLine*) -->
+        <function-decl name='compInY' mangled-name='_ZN12directedLine7compInYEPS_' filepath='libnurbs/nurbtess/directedLine.h' line='106' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int directedLine::compInX(directedLine*) -->
+        <function-decl name='compInX' mangled-name='_ZN12directedLine7compInXEPS_' filepath='libnurbs/nurbtess/directedLine.h' line='107' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real directedLine::polyArea() -->
+        <function-decl name='polyArea' mangled-name='_ZN12directedLine8polyAreaEv' filepath='libnurbs/nurbtess/directedLine.h' line='123' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- typedef Real -->
+          <return type-id='type-id-246'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int directedLine::samePolygon(directedLine*, directedLine*) -->
+        <function-decl name='samePolygon' mangled-name='_ZN12directedLine11samePolygonEPS_S0_' filepath='libnurbs/nurbtess/directedLine.h' line='150' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* directedLine::findRoot() -->
+        <function-decl name='findRoot' mangled-name='_ZN12directedLine8findRootEv' filepath='libnurbs/nurbtess/directedLine.h' line='153' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* directedLine::rootLinkFindRoot() -->
+        <function-decl name='rootLinkFindRoot' mangled-name='_ZN12directedLine16rootLinkFindRootEv' filepath='libnurbs/nurbtess/directedLine.h' line='156' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::deleteSinglePolygon() -->
+        <function-decl name='deleteSinglePolygon' mangled-name='_ZN12directedLine19deleteSinglePolygonEv' filepath='libnurbs/nurbtess/directedLine.h' line='91' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::deletePolygonList() -->
+        <function-decl name='deletePolygonList' mangled-name='_ZN12directedLine17deletePolygonListEv' filepath='libnurbs/nurbtess/directedLine.h' line='90' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::deleteSingleLine(directedLine*) -->
+        <function-decl name='deleteSingleLine' mangled-name='_ZN12directedLine16deleteSingleLineEPS_' filepath='libnurbs/nurbtess/directedLine.h' line='96' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::writeAllPolygons(char*) -->
+        <function-decl name='writeAllPolygons' mangled-name='_ZN12directedLine16writeAllPolygonsEPc' filepath='libnurbs/nurbtess/directedLine.h' line='128' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'char*' -->
+          <parameter type-id='type-id-107'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::connectDiagonal_2slines(directedLine*, directedLine*, directedLine**, directedLine**, directedLine*) -->
+        <function-decl name='connectDiagonal_2slines' mangled-name='_ZN12directedLine23connectDiagonal_2slinesEPS_S0_PS0_S1_S0_' filepath='libnurbs/nurbtess/directedLine.h' line='145' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- parameter of type 'directedLine**' -->
+          <parameter type-id='type-id-303'/>
+          <!-- parameter of type 'directedLine**' -->
+          <parameter type-id='type-id-303'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::connectDiagonal(directedLine*, directedLine*, directedLine**, directedLine**, sampledLine**, directedLine*) -->
+        <function-decl name='connectDiagonal' mangled-name='_ZN12directedLine15connectDiagonalEPS_S0_PS0_S1_PP11sampledLineS0_' filepath='libnurbs/nurbtess/directedLine.h' line='138' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- parameter of type 'directedLine**' -->
+          <parameter type-id='type-id-303'/>
+          <!-- parameter of type 'directedLine**' -->
+          <parameter type-id='type-id-303'/>
+          <!-- parameter of type 'sampledLine**' -->
+          <parameter type-id='type-id-304'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine** directedLine::toArrayAllPolygons(Int&) -->
+        <function-decl name='toArrayAllPolygons' mangled-name='_ZN12directedLine18toArrayAllPolygonsERi' filepath='libnurbs/nurbtess/directedLine.h' line='136' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'Int&' -->
+          <parameter type-id='type-id-305'/>
+          <!-- directedLine** -->
+          <return type-id='type-id-303'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* directedLine::cutoffPolygon(directedLine*) -->
+        <function-decl name='cutoffPolygon' mangled-name='_ZN12directedLine13cutoffPolygonEPS_' filepath='libnurbs/nurbtess/directedLine.h' line='133' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::printSingle() -->
+        <function-decl name='printSingle' mangled-name='_ZN12directedLine11printSingleEv' filepath='libnurbs/nurbtess/directedLine.h' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::printList() -->
+        <function-decl name='printList' mangled-name='_ZN12directedLine9printListEv' filepath='libnurbs/nurbtess/directedLine.h' line='126' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::printAllPolygons() -->
+        <function-decl name='printAllPolygons' mangled-name='_ZN12directedLine16printAllPolygonsEv' filepath='libnurbs/nurbtess/directedLine.h' line='127' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine** directedLine::sortAllPolygons() -->
+        <function-decl name='sortAllPolygons' mangled-name='_ZN12directedLine15sortAllPolygonsEv' filepath='libnurbs/nurbtess/directedLine.h' line='112' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- directedLine** -->
+          <return type-id='type-id-303'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::deleteSinglePolygonWithSline() -->
+        <function-decl name='deleteSinglePolygonWithSline' mangled-name='_ZN12directedLine28deleteSinglePolygonWithSlineEv' filepath='libnurbs/nurbtess/directedLine.h' line='93' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::deletePolygonListWithSline() -->
+        <function-decl name='deletePolygonListWithSline' mangled-name='_ZN12directedLine26deletePolygonListWithSlineEv' filepath='libnurbs/nurbtess/directedLine.h' line='94' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* directedLine::deleteDegenerateLines() -->
+        <function-decl name='deleteDegenerateLines' mangled-name='_ZN12directedLine21deleteDegenerateLinesEv' filepath='libnurbs/nurbtess/directedLine.h' line='97' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* directedLine::deleteDegenerateLinesAllPolygons() -->
+        <function-decl name='deleteDegenerateLinesAllPolygons' mangled-name='_ZN12directedLine32deleteDegenerateLinesAllPolygonsEv' filepath='libnurbs/nurbtess/directedLine.h' line='98' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* directedLine::cutIntersectionAllPoly(int&) -->
+        <function-decl name='cutIntersectionAllPoly' mangled-name='_ZN12directedLine22cutIntersectionAllPolyERi' filepath='libnurbs/nurbtess/directedLine.h' line='99' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'int&' -->
+          <parameter type-id='type-id-306'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* directedLine::deleteChain(directedLine*, directedLine*) -->
+        <function-decl name='deleteChain' mangled-name='_ZN12directedLine11deleteChainEPS_S0_' filepath='libnurbs/nurbtess/directedLine.h' line='162' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* directedLine::getPrev() -->
+        <function-decl name='getPrev' mangled-name='_ZN12directedLine7getPrevEv' filepath='libnurbs/nurbtess/directedLine.h' line='73' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* directedLine::getNextPolygon() -->
+        <function-decl name='getNextPolygon' mangled-name='_ZN12directedLine14getNextPolygonEv' filepath='libnurbs/nurbtess/directedLine.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- sampledLine* directedLine::getSampledLine() -->
+        <function-decl name='getSampledLine' mangled-name='_ZN12directedLine14getSampledLineEv' filepath='libnurbs/nurbtess/directedLine.h' line='76' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- sampledLine* -->
+          <return type-id='type-id-301'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- short int directedLine::getDirection() -->
+        <function-decl name='getDirection' mangled-name='_ZN12directedLine12getDirectionEv' filepath='libnurbs/nurbtess/directedLine.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- short int -->
+          <return type-id='type-id-299'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::putDirection(short int) -->
+        <function-decl name='putDirection' mangled-name='_ZN12directedLine12putDirectionEs' filepath='libnurbs/nurbtess/directedLine.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'short int' -->
+          <parameter type-id='type-id-299'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::putNext(directedLine*) -->
+        <function-decl name='putNext' mangled-name='_ZN12directedLine7putNextEPS_' filepath='libnurbs/nurbtess/directedLine.h' line='81' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void directedLine::putPrev(directedLine*) -->
+        <function-decl name='putPrev' mangled-name='_ZN12directedLine7putPrevEPS_' filepath='libnurbs/nurbtess/directedLine.h' line='80' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302' is-artificial='yes'/>
+          <!-- parameter of type 'directedLine*' -->
+          <parameter type-id='type-id-302'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+    </class-decl>
+    <!-- class sampledLine -->
+    <class-decl name='sampledLine' size-in-bits='192' visibility='default' filepath='libnurbs/nurbtess/sampledLine.h' line='38' column='1' id='type-id-307'>
+      <data-member access='private' layout-offset-in-bits='0'>
+        <!-- Int sampledLine::npoints -->
+        <var-decl name='npoints' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/sampledLine.h' line='39' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='64'>
+        <!-- Real2* sampledLine::points -->
+        <var-decl name='points' type-id='type-id-251' visibility='default' filepath='libnurbs/nurbtess/sampledLine.h' line='40' column='1'/>
+      </data-member>
+      <data-member access='private' layout-offset-in-bits='128'>
+        <!-- sampledLine* sampledLine::next -->
+        <var-decl name='next' type-id='type-id-301' visibility='default' filepath='libnurbs/nurbtess/sampledLine.h' line='65' column='1'/>
+      </data-member>
+      <member-function access='private' constructor='yes'>
+        <!-- sampledLine::sampledLine(Int) -->
+        <function-decl name='sampledLine' filepath='libnurbs/nurbtess/sampledLine.h' line='43' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' constructor='yes'>
+        <!-- sampledLine::sampledLine(Int, Real[2]*) -->
+        <function-decl name='sampledLine' filepath='libnurbs/nurbtess/sampledLine.h' line='44' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'Real[2]*' -->
+          <parameter type-id='type-id-257'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' constructor='yes'>
+        <!-- sampledLine::sampledLine(Real*, Real*) -->
+        <function-decl name='sampledLine' filepath='libnurbs/nurbtess/sampledLine.h' line='45' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' constructor='yes'>
+        <!-- sampledLine::sampledLine() -->
+        <function-decl name='sampledLine' filepath='libnurbs/nurbtess/sampledLine.h' line='46' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private' destructor='yes'>
+        <!-- sampledLine::~sampledLine(int) -->
+        <function-decl name='~sampledLine' filepath='libnurbs/nurbtess/sampledLine.h' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- artificial parameter of type 'int' -->
+          <parameter type-id='type-id-8' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int sampledLine::get_npoints() -->
+        <function-decl name='get_npoints' mangled-name='_ZN11sampledLine11get_npointsEv' filepath='libnurbs/nurbtess/sampledLine.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real2* sampledLine::get_points() -->
+        <function-decl name='get_points' mangled-name='_ZN11sampledLine10get_pointsEv' filepath='libnurbs/nurbtess/sampledLine.h' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- Real2* -->
+          <return type-id='type-id-251'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void sampledLine::setPoint(Int, Real*) -->
+        <function-decl name='setPoint' mangled-name='_ZN11sampledLine8setPointEiPf' filepath='libnurbs/nurbtess/sampledLine.h' line='51' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'Real*' -->
+          <parameter type-id='type-id-253'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- sampledLine* sampledLine::insert(sampledLine*) -->
+        <function-decl name='insert' mangled-name='_ZN11sampledLine6insertEPS_' filepath='libnurbs/nurbtess/sampledLine.h' line='53' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301'/>
+          <!-- sampledLine* -->
+          <return type-id='type-id-301'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void sampledLine::init(Int, Real2*) -->
+        <function-decl name='init' mangled-name='_ZN11sampledLine4initEiPA2_f' filepath='libnurbs/nurbtess/sampledLine.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- parameter of type 'Real2*' -->
+          <parameter type-id='type-id-251'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void sampledLine::tessellate(Real, Real) -->
+        <function-decl name='tessellate' mangled-name='_ZN11sampledLine10tessellateEff' filepath='libnurbs/nurbtess/sampledLine.h' line='60' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void sampledLine::tessellateAll(Real, Real) -->
+        <function-decl name='tessellateAll' mangled-name='_ZN11sampledLine13tessellateAllEff' filepath='libnurbs/nurbtess/sampledLine.h' line='61' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void sampledLine::print() -->
+        <function-decl name='print' mangled-name='_ZN11sampledLine5printEv' filepath='libnurbs/nurbtess/sampledLine.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void sampledLine::deleteList() -->
+        <function-decl name='deleteList' mangled-name='_ZN11sampledLine10deleteListEv' filepath='libnurbs/nurbtess/sampledLine.h' line='54' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'sampledLine*' -->
+          <parameter type-id='type-id-301' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- Int& -->
-    <qualified-type-def type-id='type-id-381' id='type-id-382'/>
-    <!-- Int& -->
-    <reference-type-def kind='lvalue' type-id='type-id-313' size-in-bits='64' id='type-id-381'/>
+    <reference-type-def kind='lvalue' type-id='type-id-248' size-in-bits='64' id='type-id-305'/>
     <!-- directedLine* -->
-    <pointer-type-def type-id='type-id-379' size-in-bits='64' id='type-id-380'/>
-    <!-- directedLine* const -->
-    <qualified-type-def type-id='type-id-380' const='yes' id='type-id-383'/>
+    <pointer-type-def type-id='type-id-300' size-in-bits='64' id='type-id-302'/>
     <!-- directedLine** -->
-    <pointer-type-def type-id='type-id-380' size-in-bits='64' id='type-id-384'/>
+    <pointer-type-def type-id='type-id-302' size-in-bits='64' id='type-id-303'/>
     <!-- int& -->
-    <qualified-type-def type-id='type-id-385' id='type-id-386'/>
-    <!-- int& -->
-    <reference-type-def kind='lvalue' type-id='type-id-11' size-in-bits='64' id='type-id-385'/>
+    <reference-type-def kind='lvalue' type-id='type-id-8' size-in-bits='64' id='type-id-306'/>
     <!-- sampledLine* -->
-    <pointer-type-def type-id='type-id-377' size-in-bits='64' id='type-id-378'/>
-    <!-- sampledLine* const -->
-    <qualified-type-def type-id='type-id-378' const='yes' id='type-id-387'/>
+    <pointer-type-def type-id='type-id-307' size-in-bits='64' id='type-id-301'/>
     <!-- sampledLine** -->
-    <pointer-type-def type-id='type-id-378' size-in-bits='64' id='type-id-388'/>
-  </abi-instr>
-  <abi-instr address-size='64' path='libnurbs/nurbtess/gridWrap.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
-    <!-- gridBoundaryChain* const -->
-    <qualified-type-def type-id='type-id-340' const='yes' id='type-id-389'/>
+    <pointer-type-def type-id='type-id-301' size-in-bits='64' id='type-id-304'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/nurbtess/monoChain.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
     <!-- class monoChain -->
-    <class-decl name='monoChain' size-in-bits='640' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='41' column='1' id='type-id-390'>
+    <class-decl name='monoChain' size-in-bits='640' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='41' column='1' id='type-id-308'>
       <data-member access='private' layout-offset-in-bits='0'>
         <!-- directedLine* monoChain::chainHead -->
-        <var-decl name='chainHead' type-id='type-id-380' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='42' column='1'/>
+        <var-decl name='chainHead' type-id='type-id-302' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='42' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='64'>
         <!-- directedLine* monoChain::chainTail -->
-        <var-decl name='chainTail' type-id='type-id-380' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='43' column='1'/>
+        <var-decl name='chainTail' type-id='type-id-302' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='43' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='128'>
         <!-- monoChain* monoChain::next -->
-        <var-decl name='next' type-id='type-id-391' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='44' column='1'/>
+        <var-decl name='next' type-id='type-id-309' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='44' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='192'>
         <!-- monoChain* monoChain::prev -->
-        <var-decl name='prev' type-id='type-id-391' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='45' column='1'/>
+        <var-decl name='prev' type-id='type-id-309' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='45' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='256'>
         <!-- monoChain* monoChain::nextPolygon -->
-        <var-decl name='nextPolygon' type-id='type-id-391' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='46' column='1'/>
+        <var-decl name='nextPolygon' type-id='type-id-309' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='46' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='320'>
         <!-- Real monoChain::minX -->
-        <var-decl name='minX' type-id='type-id-311' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='50' column='1'/>
+        <var-decl name='minX' type-id='type-id-246' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='50' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='352'>
         <!-- Real monoChain::maxX -->
-        <var-decl name='maxX' type-id='type-id-311' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='50' column='1'/>
+        <var-decl name='maxX' type-id='type-id-246' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='50' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='384'>
         <!-- Real monoChain::minY -->
-        <var-decl name='minY' type-id='type-id-311' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='50' column='1'/>
+        <var-decl name='minY' type-id='type-id-246' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='50' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='416'>
         <!-- Real monoChain::maxY -->
-        <var-decl name='maxY' type-id='type-id-311' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='50' column='1'/>
+        <var-decl name='maxY' type-id='type-id-246' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='50' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='448'>
         <!-- Int monoChain::isIncrease -->
-        <var-decl name='isIncrease' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='51' column='1'/>
+        <var-decl name='isIncrease' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='51' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='512'>
         <!-- directedLine* monoChain::current -->
-        <var-decl name='current' type-id='type-id-380' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='55' column='1'/>
+        <var-decl name='current' type-id='type-id-302' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='55' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='576'>
         <!-- Int monoChain::isKey -->
-        <var-decl name='isKey' type-id='type-id-313' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='82' column='1'/>
+        <var-decl name='isKey' type-id='type-id-248' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='82' column='1'/>
       </data-member>
       <data-member access='private' layout-offset-in-bits='608'>
         <!-- Real monoChain::keyY -->
-        <var-decl name='keyY' type-id='type-id-311' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='83' column='1'/>
+        <var-decl name='keyY' type-id='type-id-246' visibility='default' filepath='libnurbs/nurbtess/monoChain.h' line='83' column='1'/>
       </data-member>
       <member-function access='private' constructor='yes'>
         <!-- monoChain::monoChain(directedLine*, directedLine*) -->
         <function-decl name='monoChain' filepath='libnurbs/nurbtess/monoChain.h' line='58' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'monoChain*' -->
-          <parameter type-id='type-id-391' is-artificial='yes'/>
+          <parameter type-id='type-id-309' is-artificial='yes'/>
           <!-- parameter of type 'directedLine*' -->
-          <parameter type-id='type-id-380'/>
+          <parameter type-id='type-id-302'/>
           <!-- parameter of type 'directedLine*' -->
-          <parameter type-id='type-id-380'/>
+          <parameter type-id='type-id-302'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
       <member-function access='private' destructor='yes'>
         <!-- monoChain::~monoChain(int) -->
         <function-decl name='~monoChain' filepath='libnurbs/nurbtess/monoChain.h' line='59' column='1' visibility='default' binding='global' size-in-bits='64'>
           <!-- implicit parameter of type 'monoChain*' -->
-          <parameter type-id='type-id-391' is-artificial='yes'/>
+          <parameter type-id='type-id-309' is-artificial='yes'/>
           <!-- artificial parameter of type 'int' -->
-          <parameter type-id='type-id-11' is-artificial='yes'/>
+          <parameter type-id='type-id-8' is-artificial='yes'/>
           <!-- void -->
-          <return type-id='type-id-12'/>
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int monoChain::numChainsSingleLoop() -->
+        <function-decl name='numChainsSingleLoop' mangled-name='_ZN9monoChain19numChainsSingleLoopEv' filepath='libnurbs/nurbtess/monoChain.h' line='77' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int monoChain::numChainsAllLoops() -->
+        <function-decl name='numChainsAllLoops' mangled-name='_ZN9monoChain17numChainsAllLoopsEv' filepath='libnurbs/nurbtess/monoChain.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Int monoChain::toArraySingleLoop(monoChain**, Int) -->
+        <function-decl name='toArraySingleLoop' mangled-name='_ZN9monoChain17toArraySingleLoopEPPS_i' filepath='libnurbs/nurbtess/monoChain.h' line='80' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- parameter of type 'monoChain**' -->
+          <parameter type-id='type-id-310'/>
+          <!-- parameter of type 'typedef Int' -->
+          <parameter type-id='type-id-248'/>
+          <!-- typedef Int -->
+          <return type-id='type-id-248'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* monoChain::getHead() -->
+        <function-decl name='getHead' mangled-name='_ZN9monoChain7getHeadEv' filepath='libnurbs/nurbtess/monoChain.h' line='66' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void monoChain::resetCurrent() -->
+        <function-decl name='resetCurrent' mangled-name='_ZN9monoChain12resetCurrentEv' filepath='libnurbs/nurbtess/monoChain.h' line='69' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- monoChain* monoChain::getPrev() -->
+        <function-decl name='getPrev' mangled-name='_ZN9monoChain7getPrevEv' filepath='libnurbs/nurbtess/monoChain.h' line='65' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- monoChain* -->
+          <return type-id='type-id-309'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void monoChain::insert(monoChain*) -->
+        <function-decl name='insert' mangled-name='_ZN9monoChain6insertEPS_' filepath='libnurbs/nurbtess/monoChain.h' line='75' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void monoChain::setNextPolygon(monoChain*) -->
+        <function-decl name='setNextPolygon' mangled-name='_ZN9monoChain14setNextPolygonEPS_' filepath='libnurbs/nurbtess/monoChain.h' line='63' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- monoChain** monoChain::toArrayAllLoops(Int&) -->
+        <function-decl name='toArrayAllLoops' mangled-name='_ZN9monoChain15toArrayAllLoopsERi' filepath='libnurbs/nurbtess/monoChain.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- parameter of type 'Int&' -->
+          <parameter type-id='type-id-305'/>
+          <!-- monoChain** -->
+          <return type-id='type-id-310'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- directedLine* monoChain::find(Real) -->
+        <function-decl name='find' mangled-name='_ZN9monoChain4findEf' filepath='libnurbs/nurbtess/monoChain.h' line='85' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- directedLine* -->
+          <return type-id='type-id-302'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- Real monoChain::chainIntersectHoriz(Real) -->
+        <function-decl name='chainIntersectHoriz' mangled-name='_ZN9monoChain19chainIntersectHorizEf' filepath='libnurbs/nurbtess/monoChain.h' line='84' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- parameter of type 'typedef Real' -->
+          <parameter type-id='type-id-246'/>
+          <!-- typedef Real -->
+          <return type-id='type-id-246'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void monoChain::printOneChain() -->
+        <function-decl name='printOneChain' mangled-name='_ZN9monoChain13printOneChainEv' filepath='libnurbs/nurbtess/monoChain.h' line='87' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void monoChain::printChainLoop() -->
+        <function-decl name='printChainLoop' mangled-name='_ZN9monoChain14printChainLoopEv' filepath='libnurbs/nurbtess/monoChain.h' line='88' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void monoChain::printAllLoops() -->
+        <function-decl name='printAllLoops' mangled-name='_ZN9monoChain13printAllLoopsEv' filepath='libnurbs/nurbtess/monoChain.h' line='89' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void monoChain::deleteLoop() -->
+        <function-decl name='deleteLoop' mangled-name='_ZN9monoChain10deleteLoopEv' filepath='libnurbs/nurbtess/monoChain.h' line='71' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
+        </function-decl>
+      </member-function>
+      <member-function access='private'>
+        <!-- void monoChain::deleteLoopList() -->
+        <function-decl name='deleteLoopList' mangled-name='_ZN9monoChain14deleteLoopListEv' filepath='libnurbs/nurbtess/monoChain.h' line='72' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <!-- implicit parameter of type 'monoChain*' -->
+          <parameter type-id='type-id-309' is-artificial='yes'/>
+          <!-- void -->
+          <return type-id='type-id-14'/>
         </function-decl>
       </member-function>
     </class-decl>
     <!-- monoChain* -->
-    <pointer-type-def type-id='type-id-390' size-in-bits='64' id='type-id-391'/>
-    <!-- monoChain* const -->
-    <qualified-type-def type-id='type-id-391' const='yes' id='type-id-392'/>
+    <pointer-type-def type-id='type-id-308' size-in-bits='64' id='type-id-309'/>
     <!-- monoChain** -->
-    <pointer-type-def type-id='type-id-391' size-in-bits='64' id='type-id-393'/>
+    <pointer-type-def type-id='type-id-309' size-in-bits='64' id='type-id-310'/>
   </abi-instr>
   <abi-instr address-size='64' path='libnurbs/nurbtess/monoTriangulation.cc' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C_plus_plus'>
   </abi-instr>
@@ -9480,165 +14039,508 @@
   </abi-instr>
   <abi-instr address-size='64' path='libtess/tess.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C99'>
     <!-- CachedVertex[100] -->
-    <array-type-def dimensions='1' type-id='type-id-394' size-in-bits='25600' id='type-id-395'>
+    <array-type-def dimensions='1' type-id='type-id-311' size-in-bits='25600' id='type-id-312'>
       <!-- <anonymous range>[100] -->
-      <subrange length='100' type-id='type-id-3' id='type-id-396'/>
+      <subrange length='100' type-id='type-id-3' id='type-id-313'/>
     </array-type-def>
     <!-- GLdouble[3] -->
-    <array-type-def dimensions='1' type-id='type-id-397' size-in-bits='192' id='type-id-398'>
+    <array-type-def dimensions='1' type-id='type-id-314' size-in-bits='192' id='type-id-315'>
       <!-- <anonymous range>[3] -->
-      <subrange length='3' type-id='type-id-3' id='type-id-68'/>
+      <subrange length='3' type-id='type-id-3' id='type-id-90'/>
     </array-type-def>
     <!-- __jmp_buf_tag[1] -->
-    <array-type-def dimensions='1' type-id='type-id-191' size-in-bits='1600' id='type-id-187'>
+    <array-type-def dimensions='1' type-id='type-id-316' size-in-bits='1600' id='type-id-317'>
       <!-- <anonymous range>[1] -->
-      <subrange length='1' type-id='type-id-3' id='type-id-192'/>
+      <subrange length='1' type-id='type-id-3' id='type-id-318'/>
     </array-type-def>
     <!-- float -->
-    <type-decl name='float' size-in-bits='32' id='type-id-28'/>
+    <type-decl name='float' size-in-bits='32' id='type-id-15'/>
     <!-- long int -->
-    <type-decl name='long int' size-in-bits='64' id='type-id-15'/>
+    <type-decl name='long int' size-in-bits='64' id='type-id-38'/>
     <!-- long int[8] -->
-    <array-type-def dimensions='1' type-id='type-id-15' size-in-bits='512' id='type-id-222'>
+    <array-type-def dimensions='1' type-id='type-id-38' size-in-bits='512' id='type-id-319'>
       <!-- <anonymous range>[8] -->
-      <subrange length='8' type-id='type-id-3' id='type-id-225'/>
+      <subrange length='8' type-id='type-id-3' id='type-id-320'/>
     </array-type-def>
     <!-- unnamed&#45;enum&#45;underlying&#45;type&#45;32 -->
-    <type-decl name='unnamed-enum-underlying-type-32' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='type-id-9'/>
+    <type-decl name='unnamed-enum-underlying-type-32' is-anonymous='yes' size-in-bits='32' alignment-in-bits='32' id='type-id-12'/>
     <!-- unsigned long int -->
     <type-decl name='unsigned long int' size-in-bits='64' id='type-id-3'/>
     <!-- unsigned long int[16] -->
-    <array-type-def dimensions='1' type-id='type-id-3' size-in-bits='1024' id='type-id-224'>
+    <array-type-def dimensions='1' type-id='type-id-3' size-in-bits='1024' id='type-id-321'>
       <!-- <anonymous range>[16] -->
-      <subrange length='16' type-id='type-id-3' id='type-id-227'/>
+      <subrange length='16' type-id='type-id-3' id='type-id-322'/>
     </array-type-def>
+    <!-- typedef float GLfloat -->
+    <typedef-decl name='GLfloat' type-id='type-id-15' filepath='../../../include/GL/gl.h' line='160' column='1' id='type-id-23'/>
     <!-- typedef GLUtesselator GLUtesselator -->
-    <typedef-decl name='GLUtesselator' type-id='type-id-399' filepath='../../../include/GL/glu.h' line='276' column='1' id='type-id-400'/>
+    <typedef-decl name='GLUtesselator' type-id='type-id-323' filepath='../../../include/GL/glu.h' line='276' column='1' id='type-id-324'/>
+    <!-- typedef long int[8] __jmp_buf -->
+    <typedef-decl name='__jmp_buf' type-id='type-id-319' filepath='/usr/include/bits/setjmp.h' line='32' column='1' id='type-id-325'/>
+    <!-- struct __sigset_t -->
+    <class-decl name='__sigset_t' size-in-bits='1024' is-struct='yes' naming-typedef-id='type-id-326' visibility='default' filepath='/usr/include/bits/sigset.h' line='30' column='1' id='type-id-327'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- unsigned long int __sigset_t::__val[16] -->
+        <var-decl name='__val' type-id='type-id-321' visibility='default' filepath='/usr/include/bits/sigset.h' line='31' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef __sigset_t __sigset_t -->
+    <typedef-decl name='__sigset_t' type-id='type-id-327' filepath='/usr/include/bits/sigset.h' line='32' column='1' id='type-id-326'/>
+    <!-- struct __jmp_buf_tag -->
+    <class-decl name='__jmp_buf_tag' size-in-bits='1600' is-struct='yes' visibility='default' filepath='/usr/include/setjmp.h' line='36' column='1' id='type-id-316'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- __jmp_buf __jmp_buf_tag::__jmpbuf -->
+        <var-decl name='__jmpbuf' type-id='type-id-325' visibility='default' filepath='/usr/include/setjmp.h' line='41' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <!-- int __jmp_buf_tag::__mask_was_saved -->
+        <var-decl name='__mask_was_saved' type-id='type-id-8' visibility='default' filepath='/usr/include/setjmp.h' line='42' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <!-- __sigset_t __jmp_buf_tag::__saved_mask -->
+        <var-decl name='__saved_mask' type-id='type-id-326' visibility='default' filepath='/usr/include/setjmp.h' line='43' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef __jmp_buf_tag[1] jmp_buf -->
+    <typedef-decl name='jmp_buf' type-id='type-id-317' filepath='/usr/include/setjmp.h' line='49' column='1' id='type-id-156'/>
+    <!-- typedef void* DictListKey -->
+    <typedef-decl name='DictListKey' type-id='type-id-35' filepath='libtess/dict.h' line='60' column='1' id='type-id-328'/>
+    <!-- typedef DictList DictList -->
+    <typedef-decl name='DictList' type-id='type-id-329' filepath='libtess/dict.h' line='61' column='1' id='type-id-330'/>
+    <!-- typedef DictListNode DictListNode -->
+    <typedef-decl name='DictListNode' type-id='type-id-331' filepath='libtess/dict.h' line='62' column='1' id='type-id-332'/>
+    <!-- struct DictListNode -->
+    <class-decl name='DictListNode' size-in-bits='192' is-struct='yes' visibility='default' filepath='libtess/dict.h' line='88' column='1' id='type-id-331'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- DictListKey DictListNode::key -->
+        <var-decl name='key' type-id='type-id-328' visibility='default' filepath='libtess/dict.h' line='89' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- DictListNode* DictListNode::next -->
+        <var-decl name='next' type-id='type-id-333' visibility='default' filepath='libtess/dict.h' line='90' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- DictListNode* DictListNode::prev -->
+        <var-decl name='prev' type-id='type-id-333' visibility='default' filepath='libtess/dict.h' line='91' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- struct DictList -->
+    <class-decl name='DictList' size-in-bits='320' is-struct='yes' visibility='default' filepath='libtess/dict.h' line='94' column='1' id='type-id-329'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- DictListNode DictList::head -->
+        <var-decl name='head' type-id='type-id-332' visibility='default' filepath='libtess/dict.h' line='95' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- void* DictList::frame -->
+        <var-decl name='frame' type-id='type-id-35' visibility='default' filepath='libtess/dict.h' line='96' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- int (void*, typedef DictListKey, typedef DictListKey)* DictList::leq -->
+        <var-decl name='leq' type-id='type-id-334' visibility='default' filepath='libtess/dict.h' line='97' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef GLUmesh GLUmesh -->
+    <typedef-decl name='GLUmesh' type-id='type-id-335' filepath='libtess/mesh.h' line='40' column='1' id='type-id-336'/>
+    <!-- typedef GLUvertex GLUvertex -->
+    <typedef-decl name='GLUvertex' type-id='type-id-337' filepath='libtess/mesh.h' line='42' column='1' id='type-id-338'/>
+    <!-- typedef GLUface GLUface -->
+    <typedef-decl name='GLUface' type-id='type-id-339' filepath='libtess/mesh.h' line='43' column='1' id='type-id-340'/>
+    <!-- typedef GLUhalfEdge GLUhalfEdge -->
+    <typedef-decl name='GLUhalfEdge' type-id='type-id-341' filepath='libtess/mesh.h' line='44' column='1' id='type-id-342'/>
+    <!-- typedef ActiveRegion ActiveRegion -->
+    <typedef-decl name='ActiveRegion' type-id='type-id-343' filepath='libtess/mesh.h' line='46' column='1' id='type-id-344'/>
+    <!-- struct GLUvertex -->
+    <class-decl name='GLUvertex' size-in-bits='640' is-struct='yes' visibility='default' filepath='libtess/mesh.h' line='114' column='1' id='type-id-337'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- GLUvertex* GLUvertex::next -->
+        <var-decl name='next' type-id='type-id-345' visibility='default' filepath='libtess/mesh.h' line='115' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- GLUvertex* GLUvertex::prev -->
+        <var-decl name='prev' type-id='type-id-345' visibility='default' filepath='libtess/mesh.h' line='116' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- GLUhalfEdge* GLUvertex::anEdge -->
+        <var-decl name='anEdge' type-id='type-id-346' visibility='default' filepath='libtess/mesh.h' line='117' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- void* GLUvertex::data -->
+        <var-decl name='data' type-id='type-id-35' visibility='default' filepath='libtess/mesh.h' line='118' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- GLdouble GLUvertex::coords[3] -->
+        <var-decl name='coords' type-id='type-id-315' visibility='default' filepath='libtess/mesh.h' line='121' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <!-- GLdouble GLUvertex::s -->
+        <var-decl name='s' type-id='type-id-314' visibility='default' filepath='libtess/mesh.h' line='122' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='512'>
+        <!-- GLdouble GLUvertex::t -->
+        <var-decl name='t' type-id='type-id-314' visibility='default' filepath='libtess/mesh.h' line='122' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='576'>
+        <!-- long int GLUvertex::pqHandle -->
+        <var-decl name='pqHandle' type-id='type-id-38' visibility='default' filepath='libtess/mesh.h' line='123' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- struct GLUface -->
+    <class-decl name='GLUface' size-in-bits='384' is-struct='yes' visibility='default' filepath='libtess/mesh.h' line='126' column='1' id='type-id-339'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- GLUface* GLUface::next -->
+        <var-decl name='next' type-id='type-id-347' visibility='default' filepath='libtess/mesh.h' line='127' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- GLUface* GLUface::prev -->
+        <var-decl name='prev' type-id='type-id-347' visibility='default' filepath='libtess/mesh.h' line='128' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- GLUhalfEdge* GLUface::anEdge -->
+        <var-decl name='anEdge' type-id='type-id-346' visibility='default' filepath='libtess/mesh.h' line='129' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- void* GLUface::data -->
+        <var-decl name='data' type-id='type-id-35' visibility='default' filepath='libtess/mesh.h' line='130' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- GLUface* GLUface::trail -->
+        <var-decl name='trail' type-id='type-id-347' visibility='default' filepath='libtess/mesh.h' line='133' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- GLboolean GLUface::marked -->
+        <var-decl name='marked' type-id='type-id-42' visibility='default' filepath='libtess/mesh.h' line='134' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='328'>
+        <!-- GLboolean GLUface::inside -->
+        <var-decl name='inside' type-id='type-id-42' visibility='default' filepath='libtess/mesh.h' line='135' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- struct GLUhalfEdge -->
+    <class-decl name='GLUhalfEdge' size-in-bits='512' is-struct='yes' visibility='default' filepath='libtess/mesh.h' line='138' column='1' id='type-id-341'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- GLUhalfEdge* GLUhalfEdge::next -->
+        <var-decl name='next' type-id='type-id-346' visibility='default' filepath='libtess/mesh.h' line='139' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- GLUhalfEdge* GLUhalfEdge::Sym -->
+        <var-decl name='Sym' type-id='type-id-346' visibility='default' filepath='libtess/mesh.h' line='140' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- GLUhalfEdge* GLUhalfEdge::Onext -->
+        <var-decl name='Onext' type-id='type-id-346' visibility='default' filepath='libtess/mesh.h' line='141' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- GLUhalfEdge* GLUhalfEdge::Lnext -->
+        <var-decl name='Lnext' type-id='type-id-346' visibility='default' filepath='libtess/mesh.h' line='142' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- GLUvertex* GLUhalfEdge::Org -->
+        <var-decl name='Org' type-id='type-id-345' visibility='default' filepath='libtess/mesh.h' line='143' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- GLUface* GLUhalfEdge::Lface -->
+        <var-decl name='Lface' type-id='type-id-347' visibility='default' filepath='libtess/mesh.h' line='144' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- ActiveRegion* GLUhalfEdge::activeRegion -->
+        <var-decl name='activeRegion' type-id='type-id-348' visibility='default' filepath='libtess/mesh.h' line='147' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='448'>
+        <!-- int GLUhalfEdge::winding -->
+        <var-decl name='winding' type-id='type-id-8' visibility='default' filepath='libtess/mesh.h' line='148' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- struct GLUmesh -->
+    <class-decl name='GLUmesh' size-in-bits='2048' is-struct='yes' visibility='default' filepath='libtess/mesh.h' line='163' column='1' id='type-id-335'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- GLUvertex GLUmesh::vHead -->
+        <var-decl name='vHead' type-id='type-id-338' visibility='default' filepath='libtess/mesh.h' line='164' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='640'>
+        <!-- GLUface GLUmesh::fHead -->
+        <var-decl name='fHead' type-id='type-id-340' visibility='default' filepath='libtess/mesh.h' line='165' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1024'>
+        <!-- GLUhalfEdge GLUmesh::eHead -->
+        <var-decl name='eHead' type-id='type-id-342' visibility='default' filepath='libtess/mesh.h' line='166' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='1536'>
+        <!-- GLUhalfEdge GLUmesh::eHeadSym -->
+        <var-decl name='eHeadSym' type-id='type-id-342' visibility='default' filepath='libtess/mesh.h' line='167' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef void* PQHeapKey -->
+    <typedef-decl name='PQHeapKey' type-id='type-id-35' filepath='libtess/priorityq-heap.h' line='79' column='1' id='type-id-349'/>
+    <!-- typedef long int PQHeapHandle -->
+    <typedef-decl name='PQHeapHandle' type-id='type-id-38' filepath='libtess/priorityq-heap.h' line='80' column='1' id='type-id-350'/>
+    <!-- typedef PriorityQHeap PriorityQHeap -->
+    <typedef-decl name='PriorityQHeap' type-id='type-id-351' filepath='libtess/priorityq-heap.h' line='81' column='1' id='type-id-352'/>
+    <!-- struct PQnode -->
+    <class-decl name='PQnode' size-in-bits='64' is-struct='yes' naming-typedef-id='type-id-353' visibility='default' filepath='libtess/priorityq-heap.h' line='83' column='1' id='type-id-354'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- PQHeapHandle PQnode::handle -->
+        <var-decl name='handle' type-id='type-id-350' visibility='default' filepath='libtess/priorityq-heap.h' line='83' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef PQnode PQnode -->
+    <typedef-decl name='PQnode' type-id='type-id-354' filepath='libtess/priorityq-heap.h' line='83' column='1' id='type-id-353'/>
+    <!-- struct PQhandleElem -->
+    <class-decl name='PQhandleElem' size-in-bits='128' is-struct='yes' naming-typedef-id='type-id-355' visibility='default' filepath='libtess/priorityq-heap.h' line='84' column='1' id='type-id-356'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- PQHeapKey PQhandleElem::key -->
+        <var-decl name='key' type-id='type-id-349' visibility='default' filepath='libtess/priorityq-heap.h' line='84' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- PQHeapHandle PQhandleElem::node -->
+        <var-decl name='node' type-id='type-id-350' visibility='default' filepath='libtess/priorityq-heap.h' line='84' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef PQhandleElem PQhandleElem -->
+    <typedef-decl name='PQhandleElem' type-id='type-id-356' filepath='libtess/priorityq-heap.h' line='84' column='1' id='type-id-355'/>
+    <!-- struct PriorityQHeap -->
+    <class-decl name='PriorityQHeap' size-in-bits='448' is-struct='yes' visibility='default' filepath='libtess/priorityq-heap.h' line='86' column='1' id='type-id-351'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- PQnode* PriorityQHeap::nodes -->
+        <var-decl name='nodes' type-id='type-id-357' visibility='default' filepath='libtess/priorityq-heap.h' line='87' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- PQhandleElem* PriorityQHeap::handles -->
+        <var-decl name='handles' type-id='type-id-358' visibility='default' filepath='libtess/priorityq-heap.h' line='88' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- long int PriorityQHeap::size -->
+        <var-decl name='size' type-id='type-id-38' visibility='default' filepath='libtess/priorityq-heap.h' line='89' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- long int PriorityQHeap::max -->
+        <var-decl name='max' type-id='type-id-38' visibility='default' filepath='libtess/priorityq-heap.h' line='89' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- PQHeapHandle PriorityQHeap::freeList -->
+        <var-decl name='freeList' type-id='type-id-350' visibility='default' filepath='libtess/priorityq-heap.h' line='90' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- int PriorityQHeap::initialized -->
+        <var-decl name='initialized' type-id='type-id-8' visibility='default' filepath='libtess/priorityq-heap.h' line='91' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- int (typedef PQHeapKey, typedef PQHeapKey)* PriorityQHeap::leq -->
+        <var-decl name='leq' type-id='type-id-359' visibility='default' filepath='libtess/priorityq-heap.h' line='92' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef PQHeapKey PQSortKey -->
+    <typedef-decl name='PQSortKey' type-id='type-id-349' filepath='libtess/priorityq.h' line='93' column='1' id='type-id-360'/>
+    <!-- typedef PQHeapHandle PQSortHandle -->
+    <typedef-decl name='PQSortHandle' type-id='type-id-350' filepath='libtess/priorityq.h' line='94' column='1' id='type-id-361'/>
+    <!-- typedef PriorityQSort PriorityQSort -->
+    <typedef-decl name='PriorityQSort' type-id='type-id-362' filepath='libtess/priorityq.h' line='95' column='1' id='type-id-363'/>
+    <!-- struct PriorityQSort -->
+    <class-decl name='PriorityQSort' size-in-bits='448' is-struct='yes' visibility='default' filepath='libtess/priorityq.h' line='97' column='1' id='type-id-362'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- PriorityQHeap* PriorityQSort::heap -->
+        <var-decl name='heap' type-id='type-id-364' visibility='default' filepath='libtess/priorityq.h' line='98' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- PQSortKey* PriorityQSort::keys -->
+        <var-decl name='keys' type-id='type-id-365' visibility='default' filepath='libtess/priorityq.h' line='99' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- PQSortKey** PriorityQSort::order -->
+        <var-decl name='order' type-id='type-id-366' visibility='default' filepath='libtess/priorityq.h' line='100' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- PQSortHandle PriorityQSort::size -->
+        <var-decl name='size' type-id='type-id-361' visibility='default' filepath='libtess/priorityq.h' line='101' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <!-- PQSortHandle PriorityQSort::max -->
+        <var-decl name='max' type-id='type-id-361' visibility='default' filepath='libtess/priorityq.h' line='101' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <!-- int PriorityQSort::initialized -->
+        <var-decl name='initialized' type-id='type-id-8' visibility='default' filepath='libtess/priorityq.h' line='102' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <!-- int (typedef PQSortKey, typedef PQSortKey)* PriorityQSort::leq -->
+        <var-decl name='leq' type-id='type-id-367' visibility='default' filepath='libtess/priorityq.h' line='103' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- struct ActiveRegion -->
+    <class-decl name='ActiveRegion' size-in-bits='192' is-struct='yes' visibility='default' filepath='libtess/sweep.h' line='59' column='1' id='type-id-343'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- GLUhalfEdge* ActiveRegion::eUp -->
+        <var-decl name='eUp' type-id='type-id-346' visibility='default' filepath='libtess/sweep.h' line='60' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <!-- DictListNode* ActiveRegion::nodeUp -->
+        <var-decl name='nodeUp' type-id='type-id-333' visibility='default' filepath='libtess/sweep.h' line='61' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <!-- int ActiveRegion::windingNumber -->
+        <var-decl name='windingNumber' type-id='type-id-8' visibility='default' filepath='libtess/sweep.h' line='62' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <!-- GLboolean ActiveRegion::inside -->
+        <var-decl name='inside' type-id='type-id-42' visibility='default' filepath='libtess/sweep.h' line='64' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='168'>
+        <!-- GLboolean ActiveRegion::sentinel -->
+        <var-decl name='sentinel' type-id='type-id-42' visibility='default' filepath='libtess/sweep.h' line='65' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='176'>
+        <!-- GLboolean ActiveRegion::dirty -->
+        <var-decl name='dirty' type-id='type-id-42' visibility='default' filepath='libtess/sweep.h' line='66' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='184'>
+        <!-- GLboolean ActiveRegion::fixUpperEdge -->
+        <var-decl name='fixUpperEdge' type-id='type-id-42' visibility='default' filepath='libtess/sweep.h' line='69' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- enum TessState -->
+    <enum-decl name='TessState' filepath='libtess/tess.h' line='47' column='1' id='type-id-368'>
+      <underlying-type type-id='type-id-12'/>
+      <enumerator name='T_DORMANT' value='0'/>
+      <enumerator name='T_IN_POLYGON' value='1'/>
+      <enumerator name='T_IN_CONTOUR' value='2'/>
+    </enum-decl>
+    <!-- struct CachedVertex -->
+    <class-decl name='CachedVertex' size-in-bits='256' is-struct='yes' visibility='default' filepath='libtess/tess.h' line='54' column='1' id='type-id-369'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <!-- GLdouble CachedVertex::coords[3] -->
+        <var-decl name='coords' type-id='type-id-315' visibility='default' filepath='libtess/tess.h' line='55' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <!-- void* CachedVertex::data -->
+        <var-decl name='data' type-id='type-id-35' visibility='default' filepath='libtess/tess.h' line='56' column='1'/>
+      </data-member>
+    </class-decl>
+    <!-- typedef CachedVertex CachedVertex -->
+    <typedef-decl name='CachedVertex' type-id='type-id-369' filepath='libtess/tess.h' line='57' column='1' id='type-id-311'/>
     <!-- struct GLUtesselator -->
-    <class-decl name='GLUtesselator' size-in-bits='29376' is-struct='yes' visibility='default' filepath='libtess/tess.h' line='59' column='1' id='type-id-399'>
+    <class-decl name='GLUtesselator' size-in-bits='29376' is-struct='yes' visibility='default' filepath='libtess/tess.h' line='59' column='1' id='type-id-323'>
       <data-member access='public' layout-offset-in-bits='0'>
         <!-- TessState GLUtesselator::state -->
-        <var-decl name='state' type-id='type-id-401' visibility='default' filepath='libtess/tess.h' line='63' column='1'/>
+        <var-decl name='state' type-id='type-id-368' visibility='default' filepath='libtess/tess.h' line='63' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
         <!-- GLUhalfEdge* GLUtesselator::lastEdge -->
-        <var-decl name='lastEdge' type-id='type-id-402' visibility='default' filepath='libtess/tess.h' line='65' column='1'/>
+        <var-decl name='lastEdge' type-id='type-id-346' visibility='default' filepath='libtess/tess.h' line='65' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
         <!-- GLUmesh* GLUtesselator::mesh -->
-        <var-decl name='mesh' type-id='type-id-403' visibility='default' filepath='libtess/tess.h' line='66' column='1'/>
+        <var-decl name='mesh' type-id='type-id-370' visibility='default' filepath='libtess/tess.h' line='66' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
         <!-- void (typedef GLenum)* GLUtesselator::callError -->
-        <var-decl name='callError' type-id='type-id-19' visibility='default' filepath='libtess/tess.h' line='69' column='1'/>
+        <var-decl name='callError' type-id='type-id-31' visibility='default' filepath='libtess/tess.h' line='69' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
         <!-- GLdouble GLUtesselator::normal[3] -->
-        <var-decl name='normal' type-id='type-id-398' visibility='default' filepath='libtess/tess.h' line='73' column='1'/>
+        <var-decl name='normal' type-id='type-id-315' visibility='default' filepath='libtess/tess.h' line='73' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='448'>
         <!-- GLdouble GLUtesselator::sUnit[3] -->
-        <var-decl name='sUnit' type-id='type-id-398' visibility='default' filepath='libtess/tess.h' line='74' column='1'/>
+        <var-decl name='sUnit' type-id='type-id-315' visibility='default' filepath='libtess/tess.h' line='74' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='640'>
         <!-- GLdouble GLUtesselator::tUnit[3] -->
-        <var-decl name='tUnit' type-id='type-id-398' visibility='default' filepath='libtess/tess.h' line='75' column='1'/>
+        <var-decl name='tUnit' type-id='type-id-315' visibility='default' filepath='libtess/tess.h' line='75' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='832'>
         <!-- GLdouble GLUtesselator::relTolerance -->
-        <var-decl name='relTolerance' type-id='type-id-397' visibility='default' filepath='libtess/tess.h' line='79' column='1'/>
+        <var-decl name='relTolerance' type-id='type-id-314' visibility='default' filepath='libtess/tess.h' line='79' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='896'>
         <!-- GLenum GLUtesselator::windingRule -->
-        <var-decl name='windingRule' type-id='type-id-59' visibility='default' filepath='libtess/tess.h' line='80' column='1'/>
+        <var-decl name='windingRule' type-id='type-id-36' visibility='default' filepath='libtess/tess.h' line='80' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='928'>
         <!-- GLboolean GLUtesselator::fatalError -->
-        <var-decl name='fatalError' type-id='type-id-45' visibility='default' filepath='libtess/tess.h' line='81' column='1'/>
+        <var-decl name='fatalError' type-id='type-id-42' visibility='default' filepath='libtess/tess.h' line='81' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='960'>
         <!-- DictList* GLUtesselator::dict -->
-        <var-decl name='dict' type-id='type-id-404' visibility='default' filepath='libtess/tess.h' line='83' column='1'/>
+        <var-decl name='dict' type-id='type-id-371' visibility='default' filepath='libtess/tess.h' line='83' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1024'>
         <!-- PriorityQSort* GLUtesselator::pq -->
-        <var-decl name='pq' type-id='type-id-405' visibility='default' filepath='libtess/tess.h' line='84' column='1'/>
+        <var-decl name='pq' type-id='type-id-372' visibility='default' filepath='libtess/tess.h' line='84' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1088'>
         <!-- GLUvertex* GLUtesselator::event -->
-        <var-decl name='event' type-id='type-id-406' visibility='default' filepath='libtess/tess.h' line='85' column='1'/>
+        <var-decl name='event' type-id='type-id-345' visibility='default' filepath='libtess/tess.h' line='85' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1152'>
         <!-- void (GLdouble*, void**, GLfloat*, void**)* GLUtesselator::callCombine -->
-        <var-decl name='callCombine' type-id='type-id-407' visibility='default' filepath='libtess/tess.h' line='87' column='1'/>
+        <var-decl name='callCombine' type-id='type-id-373' visibility='default' filepath='libtess/tess.h' line='87' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1216'>
         <!-- GLboolean GLUtesselator::flagBoundary -->
-        <var-decl name='flagBoundary' type-id='type-id-45' visibility='default' filepath='libtess/tess.h' line='92' column='1'/>
+        <var-decl name='flagBoundary' type-id='type-id-42' visibility='default' filepath='libtess/tess.h' line='92' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1224'>
         <!-- GLboolean GLUtesselator::boundaryOnly -->
-        <var-decl name='boundaryOnly' type-id='type-id-45' visibility='default' filepath='libtess/tess.h' line='93' column='1'/>
+        <var-decl name='boundaryOnly' type-id='type-id-42' visibility='default' filepath='libtess/tess.h' line='93' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1280'>
         <!-- GLUface* GLUtesselator::lonelyTriList -->
-        <var-decl name='lonelyTriList' type-id='type-id-408' visibility='default' filepath='libtess/tess.h' line='94' column='1'/>
+        <var-decl name='lonelyTriList' type-id='type-id-347' visibility='default' filepath='libtess/tess.h' line='94' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1344'>
         <!-- void (typedef GLenum)* GLUtesselator::callBegin -->
-        <var-decl name='callBegin' type-id='type-id-19' visibility='default' filepath='libtess/tess.h' line='97' column='1'/>
+        <var-decl name='callBegin' type-id='type-id-31' visibility='default' filepath='libtess/tess.h' line='97' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1408'>
         <!-- void (typedef GLboolean)* GLUtesselator::callEdgeFlag -->
-        <var-decl name='callEdgeFlag' type-id='type-id-409' visibility='default' filepath='libtess/tess.h' line='98' column='1'/>
+        <var-decl name='callEdgeFlag' type-id='type-id-374' visibility='default' filepath='libtess/tess.h' line='98' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1472'>
         <!-- void (void*)* GLUtesselator::callVertex -->
-        <var-decl name='callVertex' type-id='type-id-23' visibility='default' filepath='libtess/tess.h' line='99' column='1'/>
+        <var-decl name='callVertex' type-id='type-id-34' visibility='default' filepath='libtess/tess.h' line='99' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1536'>
         <!-- void ()* GLUtesselator::callEnd -->
-        <var-decl name='callEnd' type-id='type-id-20' visibility='default' filepath='libtess/tess.h' line='100' column='1'/>
+        <var-decl name='callEnd' type-id='type-id-32' visibility='default' filepath='libtess/tess.h' line='100' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1600'>
         <!-- void (GLUmesh*)* GLUtesselator::callMesh -->
-        <var-decl name='callMesh' type-id='type-id-410' visibility='default' filepath='libtess/tess.h' line='101' column='1'/>
+        <var-decl name='callMesh' type-id='type-id-375' visibility='default' filepath='libtess/tess.h' line='101' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1664'>
         <!-- GLboolean GLUtesselator::emptyCache -->
-        <var-decl name='emptyCache' type-id='type-id-45' visibility='default' filepath='libtess/tess.h' line='106' column='1'/>
+        <var-decl name='emptyCache' type-id='type-id-42' visibility='default' filepath='libtess/tess.h' line='106' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1696'>
         <!-- int GLUtesselator::cacheCount -->
-        <var-decl name='cacheCount' type-id='type-id-11' visibility='default' filepath='libtess/tess.h' line='107' column='1'/>
+        <var-decl name='cacheCount' type-id='type-id-8' visibility='default' filepath='libtess/tess.h' line='107' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='1728'>
         <!-- CachedVertex GLUtesselator::cache[100] -->
-        <var-decl name='cache' type-id='type-id-395' visibility='default' filepath='libtess/tess.h' line='108' column='1'/>
+        <var-decl name='cache' type-id='type-id-312' visibility='default' filepath='libtess/tess.h' line='108' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='27328'>
         <!-- void (typedef GLenum, void*)* GLUtesselator::callBeginData -->
-        <var-decl name='callBeginData' type-id='type-id-22' visibility='default' filepath='libtess/tess.h' line='111' column='1'/>
+        <var-decl name='callBeginData' type-id='type-id-33' visibility='default' filepath='libtess/tess.h' line='111' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='27392'>
         <!-- void (typedef GLboolean, void*)* GLUtesselator::callEdgeFlagData -->
-        <var-decl name='callEdgeFlagData' type-id='type-id-411' visibility='default' filepath='libtess/tess.h' line='112' column='1'/>
+        <var-decl name='callEdgeFlagData' type-id='type-id-376' visibility='default' filepath='libtess/tess.h' line='112' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='27456'>
         <!-- void (void*, void*)* GLUtesselator::callVertexData -->
-        <var-decl name='callVertexData' type-id='type-id-412' visibility='default' filepath='libtess/tess.h' line='114' column='1'/>
+        <var-decl name='callVertexData' type-id='type-id-377' visibility='default' filepath='libtess/tess.h' line='114' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='27520'>
         <!-- void (void*)* GLUtesselator::callEndData -->
-        <var-decl name='callEndData' type-id='type-id-23' visibility='default' filepath='libtess/tess.h' line='115' column='1'/>
+        <var-decl name='callEndData' type-id='type-id-34' visibility='default' filepath='libtess/tess.h' line='115' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='27584'>
         <!-- void (typedef GLenum, void*)* GLUtesselator::callErrorData -->
-        <var-decl name='callErrorData' type-id='type-id-22' visibility='default' filepath='libtess/tess.h' line='116' column='1'/>
+        <var-decl name='callErrorData' type-id='type-id-33' visibility='default' filepath='libtess/tess.h' line='116' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='27648'>
         <!-- void (GLdouble*, void**, GLfloat*, void**, void*)* GLUtesselator::callCombineData -->
-        <var-decl name='callCombineData' type-id='type-id-413' visibility='default' filepath='libtess/tess.h' line='117' column='1'/>
+        <var-decl name='callCombineData' type-id='type-id-378' visibility='default' filepath='libtess/tess.h' line='117' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='27712'>
         <!-- jmp_buf GLUtesselator::env -->
@@ -9646,1186 +14548,837 @@
       </data-member>
       <data-member access='public' layout-offset-in-bits='29312'>
         <!-- void* GLUtesselator::polygonData -->
-        <var-decl name='polygonData' type-id='type-id-25' visibility='default' filepath='libtess/tess.h' line='123' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- enum TessState -->
-    <enum-decl name='TessState' filepath='libtess/tess.h' line='47' column='1' id='type-id-401'>
-      <underlying-type type-id='type-id-9'/>
-      <enumerator name='T_DORMANT' value='0'/>
-      <enumerator name='T_IN_POLYGON' value='1'/>
-      <enumerator name='T_IN_CONTOUR' value='2'/>
-    </enum-decl>
-    <!-- struct GLUhalfEdge -->
-    <class-decl name='GLUhalfEdge' size-in-bits='512' is-struct='yes' visibility='default' filepath='libtess/mesh.h' line='138' column='1' id='type-id-414'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- GLUhalfEdge* GLUhalfEdge::next -->
-        <var-decl name='next' type-id='type-id-402' visibility='default' filepath='libtess/mesh.h' line='139' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- GLUhalfEdge* GLUhalfEdge::Sym -->
-        <var-decl name='Sym' type-id='type-id-402' visibility='default' filepath='libtess/mesh.h' line='140' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- GLUhalfEdge* GLUhalfEdge::Onext -->
-        <var-decl name='Onext' type-id='type-id-402' visibility='default' filepath='libtess/mesh.h' line='141' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- GLUhalfEdge* GLUhalfEdge::Lnext -->
-        <var-decl name='Lnext' type-id='type-id-402' visibility='default' filepath='libtess/mesh.h' line='142' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- GLUvertex* GLUhalfEdge::Org -->
-        <var-decl name='Org' type-id='type-id-406' visibility='default' filepath='libtess/mesh.h' line='143' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- GLUface* GLUhalfEdge::Lface -->
-        <var-decl name='Lface' type-id='type-id-408' visibility='default' filepath='libtess/mesh.h' line='144' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- ActiveRegion* GLUhalfEdge::activeRegion -->
-        <var-decl name='activeRegion' type-id='type-id-415' visibility='default' filepath='libtess/mesh.h' line='147' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='448'>
-        <!-- int GLUhalfEdge::winding -->
-        <var-decl name='winding' type-id='type-id-11' visibility='default' filepath='libtess/mesh.h' line='148' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef GLUhalfEdge GLUhalfEdge -->
-    <typedef-decl name='GLUhalfEdge' type-id='type-id-414' filepath='libtess/mesh.h' line='44' column='1' id='type-id-416'/>
-    <!-- struct GLUvertex -->
-    <class-decl name='GLUvertex' size-in-bits='640' is-struct='yes' visibility='default' filepath='libtess/mesh.h' line='114' column='1' id='type-id-417'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- GLUvertex* GLUvertex::next -->
-        <var-decl name='next' type-id='type-id-406' visibility='default' filepath='libtess/mesh.h' line='115' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- GLUvertex* GLUvertex::prev -->
-        <var-decl name='prev' type-id='type-id-406' visibility='default' filepath='libtess/mesh.h' line='116' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- GLUhalfEdge* GLUvertex::anEdge -->
-        <var-decl name='anEdge' type-id='type-id-402' visibility='default' filepath='libtess/mesh.h' line='117' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- void* GLUvertex::data -->
-        <var-decl name='data' type-id='type-id-25' visibility='default' filepath='libtess/mesh.h' line='118' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- GLdouble GLUvertex::coords[3] -->
-        <var-decl name='coords' type-id='type-id-398' visibility='default' filepath='libtess/mesh.h' line='121' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='448'>
-        <!-- GLdouble GLUvertex::s -->
-        <var-decl name='s' type-id='type-id-397' visibility='default' filepath='libtess/mesh.h' line='122' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='512'>
-        <!-- GLdouble GLUvertex::t -->
-        <var-decl name='t' type-id='type-id-397' visibility='default' filepath='libtess/mesh.h' line='122' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='576'>
-        <!-- long int GLUvertex::pqHandle -->
-        <var-decl name='pqHandle' type-id='type-id-15' visibility='default' filepath='libtess/mesh.h' line='123' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef GLUvertex GLUvertex -->
-    <typedef-decl name='GLUvertex' type-id='type-id-417' filepath='libtess/mesh.h' line='42' column='1' id='type-id-418'/>
-    <!-- struct GLUface -->
-    <class-decl name='GLUface' size-in-bits='384' is-struct='yes' visibility='default' filepath='libtess/mesh.h' line='126' column='1' id='type-id-419'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- GLUface* GLUface::next -->
-        <var-decl name='next' type-id='type-id-408' visibility='default' filepath='libtess/mesh.h' line='127' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- GLUface* GLUface::prev -->
-        <var-decl name='prev' type-id='type-id-408' visibility='default' filepath='libtess/mesh.h' line='128' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- GLUhalfEdge* GLUface::anEdge -->
-        <var-decl name='anEdge' type-id='type-id-402' visibility='default' filepath='libtess/mesh.h' line='129' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- void* GLUface::data -->
-        <var-decl name='data' type-id='type-id-25' visibility='default' filepath='libtess/mesh.h' line='130' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- GLUface* GLUface::trail -->
-        <var-decl name='trail' type-id='type-id-408' visibility='default' filepath='libtess/mesh.h' line='133' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- GLboolean GLUface::marked -->
-        <var-decl name='marked' type-id='type-id-45' visibility='default' filepath='libtess/mesh.h' line='134' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='328'>
-        <!-- GLboolean GLUface::inside -->
-        <var-decl name='inside' type-id='type-id-45' visibility='default' filepath='libtess/mesh.h' line='135' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef GLUface GLUface -->
-    <typedef-decl name='GLUface' type-id='type-id-419' filepath='libtess/mesh.h' line='43' column='1' id='type-id-420'/>
-    <!-- typedef ActiveRegion ActiveRegion -->
-    <typedef-decl name='ActiveRegion' type-id='type-id-421' filepath='libtess/mesh.h' line='46' column='1' id='type-id-422'/>
-    <!-- struct ActiveRegion -->
-    <class-decl name='ActiveRegion' size-in-bits='192' is-struct='yes' visibility='default' filepath='libtess/sweep.h' line='59' column='1' id='type-id-421'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- GLUhalfEdge* ActiveRegion::eUp -->
-        <var-decl name='eUp' type-id='type-id-402' visibility='default' filepath='libtess/sweep.h' line='60' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- DictListNode* ActiveRegion::nodeUp -->
-        <var-decl name='nodeUp' type-id='type-id-423' visibility='default' filepath='libtess/sweep.h' line='61' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- int ActiveRegion::windingNumber -->
-        <var-decl name='windingNumber' type-id='type-id-11' visibility='default' filepath='libtess/sweep.h' line='62' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='160'>
-        <!-- GLboolean ActiveRegion::inside -->
-        <var-decl name='inside' type-id='type-id-45' visibility='default' filepath='libtess/sweep.h' line='64' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='168'>
-        <!-- GLboolean ActiveRegion::sentinel -->
-        <var-decl name='sentinel' type-id='type-id-45' visibility='default' filepath='libtess/sweep.h' line='65' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='176'>
-        <!-- GLboolean ActiveRegion::dirty -->
-        <var-decl name='dirty' type-id='type-id-45' visibility='default' filepath='libtess/sweep.h' line='66' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='184'>
-        <!-- GLboolean ActiveRegion::fixUpperEdge -->
-        <var-decl name='fixUpperEdge' type-id='type-id-45' visibility='default' filepath='libtess/sweep.h' line='69' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- struct DictListNode -->
-    <class-decl name='DictListNode' size-in-bits='192' is-struct='yes' visibility='default' filepath='libtess/dict.h' line='88' column='1' id='type-id-424'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- DictListKey DictListNode::key -->
-        <var-decl name='key' type-id='type-id-425' visibility='default' filepath='libtess/dict.h' line='89' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- DictListNode* DictListNode::next -->
-        <var-decl name='next' type-id='type-id-423' visibility='default' filepath='libtess/dict.h' line='90' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- DictListNode* DictListNode::prev -->
-        <var-decl name='prev' type-id='type-id-423' visibility='default' filepath='libtess/dict.h' line='91' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef void* DictListKey -->
-    <typedef-decl name='DictListKey' type-id='type-id-25' filepath='libtess/dict.h' line='60' column='1' id='type-id-425'/>
-    <!-- typedef DictListNode DictListNode -->
-    <typedef-decl name='DictListNode' type-id='type-id-424' filepath='libtess/dict.h' line='62' column='1' id='type-id-426'/>
-    <!-- typedef GLUmesh GLUmesh -->
-    <typedef-decl name='GLUmesh' type-id='type-id-427' filepath='libtess/mesh.h' line='40' column='1' id='type-id-428'/>
-    <!-- struct GLUmesh -->
-    <class-decl name='GLUmesh' size-in-bits='2048' is-struct='yes' visibility='default' filepath='libtess/mesh.h' line='163' column='1' id='type-id-427'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- GLUvertex GLUmesh::vHead -->
-        <var-decl name='vHead' type-id='type-id-418' visibility='default' filepath='libtess/mesh.h' line='164' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='640'>
-        <!-- GLUface GLUmesh::fHead -->
-        <var-decl name='fHead' type-id='type-id-420' visibility='default' filepath='libtess/mesh.h' line='165' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1024'>
-        <!-- GLUhalfEdge GLUmesh::eHead -->
-        <var-decl name='eHead' type-id='type-id-416' visibility='default' filepath='libtess/mesh.h' line='166' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='1536'>
-        <!-- GLUhalfEdge GLUmesh::eHeadSym -->
-        <var-decl name='eHeadSym' type-id='type-id-416' visibility='default' filepath='libtess/mesh.h' line='167' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef DictList DictList -->
-    <typedef-decl name='DictList' type-id='type-id-429' filepath='libtess/dict.h' line='61' column='1' id='type-id-430'/>
-    <!-- struct DictList -->
-    <class-decl name='DictList' size-in-bits='320' is-struct='yes' visibility='default' filepath='libtess/dict.h' line='94' column='1' id='type-id-429'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- DictListNode DictList::head -->
-        <var-decl name='head' type-id='type-id-426' visibility='default' filepath='libtess/dict.h' line='95' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- void* DictList::frame -->
-        <var-decl name='frame' type-id='type-id-25' visibility='default' filepath='libtess/dict.h' line='96' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- int (void*, typedef DictListKey, typedef DictListKey)* DictList::leq -->
-        <var-decl name='leq' type-id='type-id-431' visibility='default' filepath='libtess/dict.h' line='97' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef PriorityQSort PriorityQSort -->
-    <typedef-decl name='PriorityQSort' type-id='type-id-432' filepath='libtess/priorityq.h' line='95' column='1' id='type-id-433'/>
-    <!-- struct PriorityQSort -->
-    <class-decl name='PriorityQSort' size-in-bits='448' is-struct='yes' visibility='default' filepath='libtess/priorityq.h' line='97' column='1' id='type-id-432'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- PriorityQHeap* PriorityQSort::heap -->
-        <var-decl name='heap' type-id='type-id-434' visibility='default' filepath='libtess/priorityq.h' line='98' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- PQSortKey* PriorityQSort::keys -->
-        <var-decl name='keys' type-id='type-id-435' visibility='default' filepath='libtess/priorityq.h' line='99' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- PQSortKey** PriorityQSort::order -->
-        <var-decl name='order' type-id='type-id-436' visibility='default' filepath='libtess/priorityq.h' line='100' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- PQSortHandle PriorityQSort::size -->
-        <var-decl name='size' type-id='type-id-437' visibility='default' filepath='libtess/priorityq.h' line='101' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- PQSortHandle PriorityQSort::max -->
-        <var-decl name='max' type-id='type-id-437' visibility='default' filepath='libtess/priorityq.h' line='101' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- int PriorityQSort::initialized -->
-        <var-decl name='initialized' type-id='type-id-11' visibility='default' filepath='libtess/priorityq.h' line='102' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- int (typedef PQSortKey, typedef PQSortKey)* PriorityQSort::leq -->
-        <var-decl name='leq' type-id='type-id-438' visibility='default' filepath='libtess/priorityq.h' line='103' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef PriorityQHeap PriorityQHeap -->
-    <typedef-decl name='PriorityQHeap' type-id='type-id-439' filepath='libtess/priorityq-heap.h' line='81' column='1' id='type-id-440'/>
-    <!-- struct PriorityQHeap -->
-    <class-decl name='PriorityQHeap' size-in-bits='448' is-struct='yes' visibility='default' filepath='libtess/priorityq-heap.h' line='86' column='1' id='type-id-439'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- PQnode* PriorityQHeap::nodes -->
-        <var-decl name='nodes' type-id='type-id-441' visibility='default' filepath='libtess/priorityq-heap.h' line='87' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- PQhandleElem* PriorityQHeap::handles -->
-        <var-decl name='handles' type-id='type-id-442' visibility='default' filepath='libtess/priorityq-heap.h' line='88' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='128'>
-        <!-- long int PriorityQHeap::size -->
-        <var-decl name='size' type-id='type-id-15' visibility='default' filepath='libtess/priorityq-heap.h' line='89' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- long int PriorityQHeap::max -->
-        <var-decl name='max' type-id='type-id-15' visibility='default' filepath='libtess/priorityq-heap.h' line='89' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='256'>
-        <!-- PQHeapHandle PriorityQHeap::freeList -->
-        <var-decl name='freeList' type-id='type-id-443' visibility='default' filepath='libtess/priorityq-heap.h' line='90' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='320'>
-        <!-- int PriorityQHeap::initialized -->
-        <var-decl name='initialized' type-id='type-id-11' visibility='default' filepath='libtess/priorityq-heap.h' line='91' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='384'>
-        <!-- int (typedef PQHeapKey, typedef PQHeapKey)* PriorityQHeap::leq -->
-        <var-decl name='leq' type-id='type-id-444' visibility='default' filepath='libtess/priorityq-heap.h' line='92' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef __anonymous_struct__ PQnode -->
-    <typedef-decl name='PQnode' type-id='type-id-445' filepath='libtess/priorityq-heap.h' line='83' column='1' id='type-id-446'/>
-    <!-- struct {PQHeapHandle handle;} -->
-    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-446' visibility='default' filepath='libtess/priorityq-heap.h' line='83' column='1' id='type-id-445'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- PQHeapHandle handle -->
-        <var-decl name='handle' type-id='type-id-443' visibility='default' filepath='libtess/priorityq-heap.h' line='83' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef long int PQHeapHandle -->
-    <typedef-decl name='PQHeapHandle' type-id='type-id-15' filepath='libtess/priorityq-heap.h' line='80' column='1' id='type-id-443'/>
-    <!-- typedef __anonymous_struct__1 PQhandleElem -->
-    <typedef-decl name='PQhandleElem' type-id='type-id-447' filepath='libtess/priorityq-heap.h' line='84' column='1' id='type-id-448'/>
-    <!-- struct {PQHeapKey key; PQHeapHandle node;} -->
-    <class-decl name='__anonymous_struct__1' size-in-bits='128' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-448' visibility='default' filepath='libtess/priorityq-heap.h' line='84' column='1' id='type-id-447'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- PQHeapKey key -->
-        <var-decl name='key' type-id='type-id-449' visibility='default' filepath='libtess/priorityq-heap.h' line='84' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='64'>
-        <!-- PQHeapHandle node -->
-        <var-decl name='node' type-id='type-id-443' visibility='default' filepath='libtess/priorityq-heap.h' line='84' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- struct __jmp_buf_tag -->
-    <class-decl name='__jmp_buf_tag' size-in-bits='1600' is-struct='yes' visibility='default' filepath='/usr/include/setjmp.h' line='36' column='1' id='type-id-191'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- __jmp_buf __jmp_buf_tag::__jmpbuf -->
-        <var-decl name='__jmpbuf' type-id='type-id-215' visibility='default' filepath='/usr/include/setjmp.h' line='41' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='512'>
-        <!-- int __jmp_buf_tag::__mask_was_saved -->
-        <var-decl name='__mask_was_saved' type-id='type-id-11' visibility='default' filepath='/usr/include/setjmp.h' line='42' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='576'>
-        <!-- __sigset_t __jmp_buf_tag::__saved_mask -->
-        <var-decl name='__saved_mask' type-id='type-id-216' visibility='default' filepath='/usr/include/setjmp.h' line='43' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef void* PQHeapKey -->
-    <typedef-decl name='PQHeapKey' type-id='type-id-25' filepath='libtess/priorityq-heap.h' line='79' column='1' id='type-id-449'/>
-    <!-- typedef PQHeapKey PQSortKey -->
-    <typedef-decl name='PQSortKey' type-id='type-id-449' filepath='libtess/priorityq.h' line='93' column='1' id='type-id-450'/>
-    <!-- typedef PQHeapHandle PQSortHandle -->
-    <typedef-decl name='PQSortHandle' type-id='type-id-443' filepath='libtess/priorityq.h' line='94' column='1' id='type-id-437'/>
-    <!-- typedef float GLfloat -->
-    <typedef-decl name='GLfloat' type-id='type-id-28' filepath='../../../include/GL/gl.h' line='160' column='1' id='type-id-32'/>
-    <!-- typedef CachedVertex CachedVertex -->
-    <typedef-decl name='CachedVertex' type-id='type-id-451' filepath='libtess/tess.h' line='57' column='1' id='type-id-394'/>
-    <!-- struct CachedVertex -->
-    <class-decl name='CachedVertex' size-in-bits='256' is-struct='yes' visibility='default' filepath='libtess/tess.h' line='54' column='1' id='type-id-451'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- GLdouble CachedVertex::coords[3] -->
-        <var-decl name='coords' type-id='type-id-398' visibility='default' filepath='libtess/tess.h' line='55' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='192'>
-        <!-- void* CachedVertex::data -->
-        <var-decl name='data' type-id='type-id-25' visibility='default' filepath='libtess/tess.h' line='56' column='1'/>
-      </data-member>
-    </class-decl>
-    <!-- typedef __jmp_buf_tag[1] jmp_buf -->
-    <typedef-decl name='jmp_buf' type-id='type-id-187' filepath='/usr/include/setjmp.h' line='49' column='1' id='type-id-156'/>
-    <!-- typedef long int[8] __jmp_buf -->
-    <typedef-decl name='__jmp_buf' type-id='type-id-222' filepath='/usr/include/bits/setjmp.h' line='32' column='1' id='type-id-215'/>
-    <!-- typedef __anonymous_struct__2 __sigset_t -->
-    <typedef-decl name='__sigset_t' type-id='type-id-223' filepath='/usr/include/bits/sigset.h' line='32' column='1' id='type-id-216'/>
-    <!-- struct {unsigned long int __val[16];} -->
-    <class-decl name='__anonymous_struct__2' size-in-bits='1024' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-216' visibility='default' filepath='/usr/include/bits/sigset.h' line='30' column='1' id='type-id-223'>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <!-- unsigned long int __val[16] -->
-        <var-decl name='__val' type-id='type-id-224' visibility='default' filepath='/usr/include/bits/sigset.h' line='31' column='1'/>
+        <var-decl name='polygonData' type-id='type-id-35' visibility='default' filepath='libtess/tess.h' line='123' column='1'/>
       </data-member>
     </class-decl>
     <!-- ActiveRegion* -->
-    <pointer-type-def type-id='type-id-422' size-in-bits='64' id='type-id-415'/>
+    <pointer-type-def type-id='type-id-344' size-in-bits='64' id='type-id-348'/>
     <!-- DictList* -->
-    <pointer-type-def type-id='type-id-430' size-in-bits='64' id='type-id-404'/>
+    <pointer-type-def type-id='type-id-330' size-in-bits='64' id='type-id-371'/>
     <!-- DictListNode* -->
-    <pointer-type-def type-id='type-id-426' size-in-bits='64' id='type-id-423'/>
+    <pointer-type-def type-id='type-id-332' size-in-bits='64' id='type-id-333'/>
     <!-- GLUface* -->
-    <pointer-type-def type-id='type-id-420' size-in-bits='64' id='type-id-408'/>
+    <pointer-type-def type-id='type-id-340' size-in-bits='64' id='type-id-347'/>
     <!-- GLUhalfEdge* -->
-    <pointer-type-def type-id='type-id-416' size-in-bits='64' id='type-id-402'/>
+    <pointer-type-def type-id='type-id-342' size-in-bits='64' id='type-id-346'/>
     <!-- GLUmesh* -->
-    <pointer-type-def type-id='type-id-428' size-in-bits='64' id='type-id-403'/>
+    <pointer-type-def type-id='type-id-336' size-in-bits='64' id='type-id-370'/>
     <!-- GLUtesselator* -->
-    <pointer-type-def type-id='type-id-400' size-in-bits='64' id='type-id-452'/>
+    <pointer-type-def type-id='type-id-324' size-in-bits='64' id='type-id-379'/>
     <!-- GLUvertex* -->
-    <pointer-type-def type-id='type-id-418' size-in-bits='64' id='type-id-406'/>
+    <pointer-type-def type-id='type-id-338' size-in-bits='64' id='type-id-345'/>
     <!-- GLfloat* -->
-    <pointer-type-def type-id='type-id-32' size-in-bits='64' id='type-id-61'/>
+    <pointer-type-def type-id='type-id-23' size-in-bits='64' id='type-id-45'/>
     <!-- PQSortKey* -->
-    <pointer-type-def type-id='type-id-450' size-in-bits='64' id='type-id-435'/>
+    <pointer-type-def type-id='type-id-360' size-in-bits='64' id='type-id-365'/>
     <!-- PQSortKey** -->
-    <pointer-type-def type-id='type-id-435' size-in-bits='64' id='type-id-436'/>
+    <pointer-type-def type-id='type-id-365' size-in-bits='64' id='type-id-366'/>
     <!-- PQhandleElem* -->
-    <pointer-type-def type-id='type-id-448' size-in-bits='64' id='type-id-442'/>
+    <pointer-type-def type-id='type-id-355' size-in-bits='64' id='type-id-358'/>
     <!-- PQnode* -->
-    <pointer-type-def type-id='type-id-446' size-in-bits='64' id='type-id-441'/>
+    <pointer-type-def type-id='type-id-353' size-in-bits='64' id='type-id-357'/>
     <!-- PriorityQHeap* -->
-    <pointer-type-def type-id='type-id-440' size-in-bits='64' id='type-id-434'/>
+    <pointer-type-def type-id='type-id-352' size-in-bits='64' id='type-id-364'/>
     <!-- PriorityQSort* -->
-    <pointer-type-def type-id='type-id-433' size-in-bits='64' id='type-id-405'/>
+    <pointer-type-def type-id='type-id-363' size-in-bits='64' id='type-id-372'/>
     <!-- int (typedef PQHeapKey, typedef PQHeapKey)* -->
-    <pointer-type-def type-id='type-id-453' size-in-bits='64' id='type-id-444'/>
+    <pointer-type-def type-id='type-id-380' size-in-bits='64' id='type-id-359'/>
     <!-- int (typedef PQSortKey, typedef PQSortKey)* -->
-    <pointer-type-def type-id='type-id-454' size-in-bits='64' id='type-id-438'/>
+    <pointer-type-def type-id='type-id-381' size-in-bits='64' id='type-id-367'/>
     <!-- int (void*, typedef DictListKey, typedef DictListKey)* -->
-    <pointer-type-def type-id='type-id-455' size-in-bits='64' id='type-id-431'/>
+    <pointer-type-def type-id='type-id-382' size-in-bits='64' id='type-id-334'/>
     <!-- void (GLUmesh*)* -->
-    <pointer-type-def type-id='type-id-456' size-in-bits='64' id='type-id-410'/>
+    <pointer-type-def type-id='type-id-383' size-in-bits='64' id='type-id-375'/>
     <!-- void (GLdouble*, void**, GLfloat*, void**)* -->
-    <pointer-type-def type-id='type-id-457' size-in-bits='64' id='type-id-407'/>
+    <pointer-type-def type-id='type-id-384' size-in-bits='64' id='type-id-373'/>
     <!-- void (GLdouble*, void**, GLfloat*, void**, void*)* -->
-    <pointer-type-def type-id='type-id-458' size-in-bits='64' id='type-id-413'/>
+    <pointer-type-def type-id='type-id-385' size-in-bits='64' id='type-id-378'/>
     <!-- void (typedef GLboolean)* -->
-    <pointer-type-def type-id='type-id-459' size-in-bits='64' id='type-id-409'/>
+    <pointer-type-def type-id='type-id-386' size-in-bits='64' id='type-id-374'/>
     <!-- void (typedef GLboolean, void*)* -->
-    <pointer-type-def type-id='type-id-460' size-in-bits='64' id='type-id-411'/>
+    <pointer-type-def type-id='type-id-387' size-in-bits='64' id='type-id-376'/>
     <!-- void (typedef GLenum)* -->
-    <pointer-type-def type-id='type-id-39' size-in-bits='64' id='type-id-19'/>
+    <pointer-type-def type-id='type-id-388' size-in-bits='64' id='type-id-31'/>
     <!-- void (typedef GLenum, void*)* -->
-    <pointer-type-def type-id='type-id-40' size-in-bits='64' id='type-id-22'/>
+    <pointer-type-def type-id='type-id-389' size-in-bits='64' id='type-id-33'/>
     <!-- void (void*)* -->
-    <pointer-type-def type-id='type-id-41' size-in-bits='64' id='type-id-23'/>
+    <pointer-type-def type-id='type-id-390' size-in-bits='64' id='type-id-34'/>
     <!-- void (void*, void*)* -->
-    <pointer-type-def type-id='type-id-461' size-in-bits='64' id='type-id-412'/>
+    <pointer-type-def type-id='type-id-391' size-in-bits='64' id='type-id-377'/>
     <!-- void** -->
-    <pointer-type-def type-id='type-id-25' size-in-bits='64' id='type-id-163'/>
-    <!-- void gluTessProperty(GLUtesselator*, GLenum, GLdouble) -->
-    <function-decl name='gluTessProperty' mangled-name='gluTessProperty' filepath='libtess/tess.c' line='201' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessProperty'>
-      <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='201' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='which' filepath='libtess/tess.c' line='201' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='value' filepath='libtess/tess.c' line='201' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluGetTessProperty(GLUtesselator*, GLenum, GLdouble*) -->
-    <function-decl name='gluGetTessProperty' mangled-name='gluGetTessProperty' filepath='libtess/tess.c' line='240' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluGetTessProperty'>
-      <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='240' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='which' filepath='libtess/tess.c' line='240' column='1'/>
-      <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462' name='value' filepath='libtess/tess.c' line='240' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluTessNormal(GLUtesselator*, GLdouble, GLdouble, GLdouble) -->
-    <function-decl name='gluTessNormal' mangled-name='gluTessNormal' filepath='libtess/tess.c' line='268' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessNormal'>
-      <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='268' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='x' filepath='libtess/tess.c' line='268' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='y' filepath='libtess/tess.c' line='268' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='z' filepath='libtess/tess.c' line='268' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluTessCallback(GLUtesselator*, GLenum, _GLUfuncptr) -->
-    <function-decl name='gluTessCallback' mangled-name='gluTessCallback' filepath='libtess/tess.c' line='276' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessCallback'>
-      <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='276' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='which' filepath='libtess/tess.c' line='276' column='1'/>
-      <!-- parameter of type 'typedef _GLUfuncptr' -->
-      <parameter type-id='type-id-60' name='fn' filepath='libtess/tess.c' line='276' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluTessEndContour(GLUtesselator*) -->
-    <function-decl name='gluTessEndContour' mangled-name='gluTessEndContour' filepath='libtess/tess.c' line='493' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessEndContour'>
-      <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='493' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluTessBeginContour(GLUtesselator*) -->
-    <function-decl name='gluTessBeginContour' mangled-name='gluTessBeginContour' filepath='libtess/tess.c' line='476' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessBeginContour'>
-      <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='476' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluNextContour(GLUtesselator*, GLenum) -->
-    <function-decl name='gluNextContour' mangled-name='gluNextContour' filepath='libtess/tess.c' line='620' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNextContour'>
-      <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='620' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='type' filepath='libtess/tess.c' line='620' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluTessBeginPolygon(GLUtesselator*, void*) -->
-    <function-decl name='gluTessBeginPolygon' mangled-name='gluTessBeginPolygon' filepath='libtess/tess.c' line='462' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessBeginPolygon'>
-      <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='462' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25' name='data' filepath='libtess/tess.c' line='462' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluBeginPolygon(GLUtesselator*) -->
-    <function-decl name='gluBeginPolygon' mangled-name='gluBeginPolygon' filepath='libtess/tess.c' line='611' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBeginPolygon'>
-      <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='611' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluTessEndPolygon(GLUtesselator*) -->
-    <function-decl name='gluTessEndPolygon' mangled-name='gluTessEndPolygon' filepath='libtess/tess.c' line='500' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessEndPolygon'>
-      <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='500' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluEndPolygon(GLUtesselator*) -->
-    <function-decl name='gluEndPolygon' mangled-name='gluEndPolygon' filepath='libtess/tess.c' line='628' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluEndPolygon'>
-      <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='628' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluTessVertex(GLUtesselator*, GLdouble*, void*) -->
-    <function-decl name='gluTessVertex' mangled-name='gluTessVertex' filepath='libtess/tess.c' line='415' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessVertex'>
-      <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='415' column='1'/>
-      <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462' name='coords' filepath='libtess/tess.c' line='415' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25' name='data' filepath='libtess/tess.c' line='415' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
+    <pointer-type-def type-id='type-id-35' size-in-bits='64' id='type-id-191'/>
+    <!-- GLUtesselator* gluNewTess() -->
+    <function-decl name='gluNewTess' mangled-name='gluNewTess' filepath='libtess/tess.c' line='92' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNewTess'>
+      <!-- GLUtesselator* -->
+      <return type-id='type-id-379'/>
     </function-decl>
     <!-- void gluDeleteTess(GLUtesselator*) -->
     <function-decl name='gluDeleteTess' mangled-name='gluDeleteTess' filepath='libtess/tess.c' line='193' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluDeleteTess'>
       <!-- parameter of type 'GLUtesselator*' -->
-      <parameter type-id='type-id-452' name='tess' filepath='libtess/tess.c' line='193' column='1'/>
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='193' column='1'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-decl>
-    <!-- GLUtesselator* gluNewTess() -->
-    <function-decl name='gluNewTess' mangled-name='gluNewTess' filepath='libtess/tess.c' line='92' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNewTess'>
-      <!-- GLUtesselator* -->
-      <return type-id='type-id-452'/>
+    <!-- void gluTessProperty(GLUtesselator*, GLenum, GLdouble) -->
+    <function-decl name='gluTessProperty' mangled-name='gluTessProperty' filepath='libtess/tess.c' line='201' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessProperty'>
+      <!-- parameter of type 'GLUtesselator*' -->
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='201' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='which' filepath='libtess/tess.c' line='201' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='value' filepath='libtess/tess.c' line='201' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
     </function-decl>
-    <!-- GLdouble* -->
-    <pointer-type-def type-id='type-id-397' size-in-bits='64' id='type-id-462'/>
+    <!-- void gluGetTessProperty(GLUtesselator*, GLenum, GLdouble*) -->
+    <function-decl name='gluGetTessProperty' mangled-name='gluGetTessProperty' filepath='libtess/tess.c' line='240' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluGetTessProperty'>
+      <!-- parameter of type 'GLUtesselator*' -->
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='240' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='which' filepath='libtess/tess.c' line='240' column='1'/>
+      <!-- parameter of type 'GLdouble*' -->
+      <parameter type-id='type-id-392' name='value' filepath='libtess/tess.c' line='240' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluTessNormal(GLUtesselator*, GLdouble, GLdouble, GLdouble) -->
+    <function-decl name='gluTessNormal' mangled-name='gluTessNormal' filepath='libtess/tess.c' line='268' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessNormal'>
+      <!-- parameter of type 'GLUtesselator*' -->
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='268' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='x' filepath='libtess/tess.c' line='268' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='y' filepath='libtess/tess.c' line='268' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='z' filepath='libtess/tess.c' line='268' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluTessCallback(GLUtesselator*, GLenum, _GLUfuncptr) -->
+    <function-decl name='gluTessCallback' mangled-name='gluTessCallback' filepath='libtess/tess.c' line='276' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessCallback'>
+      <!-- parameter of type 'GLUtesselator*' -->
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='276' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='which' filepath='libtess/tess.c' line='276' column='1'/>
+      <!-- parameter of type 'typedef _GLUfuncptr' -->
+      <parameter type-id='type-id-37' name='fn' filepath='libtess/tess.c' line='276' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluTessVertex(GLUtesselator*, GLdouble*, void*) -->
+    <function-decl name='gluTessVertex' mangled-name='gluTessVertex' filepath='libtess/tess.c' line='415' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessVertex'>
+      <!-- parameter of type 'GLUtesselator*' -->
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='415' column='1'/>
+      <!-- parameter of type 'GLdouble*' -->
+      <parameter type-id='type-id-392' name='coords' filepath='libtess/tess.c' line='415' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-35' name='data' filepath='libtess/tess.c' line='415' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluTessBeginPolygon(GLUtesselator*, void*) -->
+    <function-decl name='gluTessBeginPolygon' mangled-name='gluTessBeginPolygon' filepath='libtess/tess.c' line='462' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessBeginPolygon'>
+      <!-- parameter of type 'GLUtesselator*' -->
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='462' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-35' name='data' filepath='libtess/tess.c' line='462' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluTessBeginContour(GLUtesselator*) -->
+    <function-decl name='gluTessBeginContour' mangled-name='gluTessBeginContour' filepath='libtess/tess.c' line='476' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessBeginContour'>
+      <!-- parameter of type 'GLUtesselator*' -->
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='476' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluTessEndContour(GLUtesselator*) -->
+    <function-decl name='gluTessEndContour' mangled-name='gluTessEndContour' filepath='libtess/tess.c' line='493' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessEndContour'>
+      <!-- parameter of type 'GLUtesselator*' -->
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='493' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluTessEndPolygon(GLUtesselator*) -->
+    <function-decl name='gluTessEndPolygon' mangled-name='gluTessEndPolygon' filepath='libtess/tess.c' line='500' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluTessEndPolygon'>
+      <!-- parameter of type 'GLUtesselator*' -->
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='500' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluBeginPolygon(GLUtesselator*) -->
+    <function-decl name='gluBeginPolygon' mangled-name='gluBeginPolygon' filepath='libtess/tess.c' line='611' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBeginPolygon'>
+      <!-- parameter of type 'GLUtesselator*' -->
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='611' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluNextContour(GLUtesselator*, GLenum) -->
+    <function-decl name='gluNextContour' mangled-name='gluNextContour' filepath='libtess/tess.c' line='620' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluNextContour'>
+      <!-- parameter of type 'GLUtesselator*' -->
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='620' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='type' filepath='libtess/tess.c' line='620' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- void gluEndPolygon(GLUtesselator*) -->
+    <function-decl name='gluEndPolygon' mangled-name='gluEndPolygon' filepath='libtess/tess.c' line='628' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluEndPolygon'>
+      <!-- parameter of type 'GLUtesselator*' -->
+      <parameter type-id='type-id-379' name='tess' filepath='libtess/tess.c' line='628' column='1'/>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-decl>
     <!-- int (PQHeapKey, PQHeapKey) -->
-    <function-type size-in-bits='64' id='type-id-453'>
+    <function-type size-in-bits='64' id='type-id-380'>
       <!-- parameter of type 'typedef PQHeapKey' -->
-      <parameter type-id='type-id-449'/>
+      <parameter type-id='type-id-349'/>
       <!-- parameter of type 'typedef PQHeapKey' -->
-      <parameter type-id='type-id-449'/>
+      <parameter type-id='type-id-349'/>
       <!-- int -->
-      <return type-id='type-id-11'/>
+      <return type-id='type-id-8'/>
     </function-type>
     <!-- int (PQSortKey, PQSortKey) -->
-    <function-type size-in-bits='64' id='type-id-454'>
+    <function-type size-in-bits='64' id='type-id-381'>
       <!-- parameter of type 'typedef PQSortKey' -->
-      <parameter type-id='type-id-450'/>
+      <parameter type-id='type-id-360'/>
       <!-- parameter of type 'typedef PQSortKey' -->
-      <parameter type-id='type-id-450'/>
+      <parameter type-id='type-id-360'/>
       <!-- int -->
-      <return type-id='type-id-11'/>
+      <return type-id='type-id-8'/>
     </function-type>
     <!-- int (void*, DictListKey, DictListKey) -->
-    <function-type size-in-bits='64' id='type-id-455'>
+    <function-type size-in-bits='64' id='type-id-382'>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-35'/>
       <!-- parameter of type 'typedef DictListKey' -->
-      <parameter type-id='type-id-425'/>
+      <parameter type-id='type-id-328'/>
       <!-- parameter of type 'typedef DictListKey' -->
-      <parameter type-id='type-id-425'/>
+      <parameter type-id='type-id-328'/>
       <!-- int -->
-      <return type-id='type-id-11'/>
+      <return type-id='type-id-8'/>
     </function-type>
     <!-- void (GLUmesh*) -->
-    <function-type size-in-bits='64' id='type-id-456'>
+    <function-type size-in-bits='64' id='type-id-383'>
       <!-- parameter of type 'GLUmesh*' -->
-      <parameter type-id='type-id-403'/>
+      <parameter type-id='type-id-370'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-type>
     <!-- void (GLdouble*, void**, GLfloat*, void**) -->
-    <function-type size-in-bits='64' id='type-id-457'>
+    <function-type size-in-bits='64' id='type-id-384'>
       <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462'/>
+      <parameter type-id='type-id-392'/>
       <!-- parameter of type 'void**' -->
-      <parameter type-id='type-id-163'/>
+      <parameter type-id='type-id-191'/>
       <!-- parameter of type 'GLfloat*' -->
-      <parameter type-id='type-id-61'/>
+      <parameter type-id='type-id-45'/>
       <!-- parameter of type 'void**' -->
-      <parameter type-id='type-id-163'/>
+      <parameter type-id='type-id-191'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-type>
     <!-- void (GLdouble*, void**, GLfloat*, void**, void*) -->
-    <function-type size-in-bits='64' id='type-id-458'>
+    <function-type size-in-bits='64' id='type-id-385'>
       <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462'/>
+      <parameter type-id='type-id-392'/>
       <!-- parameter of type 'void**' -->
-      <parameter type-id='type-id-163'/>
+      <parameter type-id='type-id-191'/>
       <!-- parameter of type 'GLfloat*' -->
-      <parameter type-id='type-id-61'/>
+      <parameter type-id='type-id-45'/>
       <!-- parameter of type 'void**' -->
-      <parameter type-id='type-id-163'/>
+      <parameter type-id='type-id-191'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-35'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-type>
     <!-- void (GLboolean) -->
-    <function-type size-in-bits='64' id='type-id-459'>
+    <function-type size-in-bits='64' id='type-id-386'>
       <!-- parameter of type 'typedef GLboolean' -->
-      <parameter type-id='type-id-45'/>
+      <parameter type-id='type-id-42'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-type>
     <!-- void (GLboolean, void*) -->
-    <function-type size-in-bits='64' id='type-id-460'>
+    <function-type size-in-bits='64' id='type-id-387'>
       <!-- parameter of type 'typedef GLboolean' -->
-      <parameter type-id='type-id-45'/>
+      <parameter type-id='type-id-42'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-35'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-type>
     <!-- void (GLenum) -->
-    <function-type size-in-bits='64' id='type-id-39'>
+    <function-type size-in-bits='64' id='type-id-388'>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59'/>
+      <parameter type-id='type-id-36'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-type>
     <!-- void (GLenum, void*) -->
-    <function-type size-in-bits='64' id='type-id-40'>
+    <function-type size-in-bits='64' id='type-id-389'>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59'/>
+      <parameter type-id='type-id-36'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-35'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-type>
     <!-- void (void*) -->
-    <function-type size-in-bits='64' id='type-id-41'>
+    <function-type size-in-bits='64' id='type-id-390'>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-35'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-type>
     <!-- void (void*, void*) -->
-    <function-type size-in-bits='64' id='type-id-461'>
+    <function-type size-in-bits='64' id='type-id-391'>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-35'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-35'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-type>
-    <!-- typedef double GLdouble -->
-    <typedef-decl name='GLdouble' type-id='type-id-463' filepath='../../../include/GL/gl.h' line='162' column='1' id='type-id-397'/>
-    <!-- double -->
-    <type-decl name='double' size-in-bits='64' id='type-id-463'/>
+    <!-- void () -->
+    <function-type size-in-bits='64' id='type-id-393'>
+      <!-- void -->
+      <return type-id='type-id-14'/>
+    </function-type>
   </abi-instr>
   <abi-instr address-size='64' path='libutil/error.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C99'>
     <!-- unsigned char -->
-    <type-decl name='unsigned char' size-in-bits='8' id='type-id-91'/>
+    <type-decl name='unsigned char' size-in-bits='8' id='type-id-394'/>
     <!-- unsigned int -->
-    <type-decl name='unsigned int' size-in-bits='32' id='type-id-92'/>
-    <!-- typedef unsigned char GLubyte -->
-    <typedef-decl name='GLubyte' type-id='type-id-91' filepath='../../../include/GL/gl.h' line='156' column='1' id='type-id-464'/>
+    <type-decl name='unsigned int' size-in-bits='32' id='type-id-224'/>
     <!-- typedef unsigned int GLenum -->
-    <typedef-decl name='GLenum' type-id='type-id-92' filepath='../../../include/GL/gl.h' line='149' column='1' id='type-id-59'/>
+    <typedef-decl name='GLenum' type-id='type-id-224' filepath='../../../include/GL/gl.h' line='149' column='1' id='type-id-36'/>
+    <!-- typedef unsigned char GLubyte -->
+    <typedef-decl name='GLubyte' type-id='type-id-394' filepath='../../../include/GL/gl.h' line='156' column='1' id='type-id-395'/>
     <!-- const GLubyte -->
-    <qualified-type-def type-id='type-id-464' const='yes' id='type-id-465'/>
+    <qualified-type-def type-id='type-id-395' const='yes' id='type-id-396'/>
     <!-- const GLubyte* -->
-    <pointer-type-def type-id='type-id-465' size-in-bits='64' id='type-id-466'/>
+    <pointer-type-def type-id='type-id-396' size-in-bits='64' id='type-id-397'/>
     <!-- const GLubyte* gluErrorString(GLenum) -->
     <function-decl name='gluErrorString' mangled-name='gluErrorString' filepath='libutil/error.c' line='66' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluErrorString'>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='errorCode' filepath='libutil/error.c' line='66' column='1'/>
+      <parameter type-id='type-id-36' name='errorCode' filepath='libutil/error.c' line='66' column='1'/>
       <!-- const GLubyte* -->
-      <return type-id='type-id-466'/>
+      <return type-id='type-id-397'/>
     </function-decl>
   </abi-instr>
   <abi-instr address-size='64' path='libutil/mipmap.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C99'>
     <!-- int -->
-    <type-decl name='int' size-in-bits='32' id='type-id-11'/>
-    <!-- void -->
-    <type-decl name='void' id='type-id-12'/>
+    <type-decl name='int' size-in-bits='32' id='type-id-8'/>
     <!-- typedef int GLint -->
-    <typedef-decl name='GLint' type-id='type-id-11' filepath='../../../include/GL/gl.h' line='155' column='1' id='type-id-63'/>
+    <typedef-decl name='GLint' type-id='type-id-8' filepath='../../../include/GL/gl.h' line='155' column='1' id='type-id-50'/>
     <!-- typedef int GLsizei -->
-    <typedef-decl name='GLsizei' type-id='type-id-11' filepath='../../../include/GL/gl.h' line='159' column='1' id='type-id-467'/>
+    <typedef-decl name='GLsizei' type-id='type-id-8' filepath='../../../include/GL/gl.h' line='159' column='1' id='type-id-398'/>
     <!-- void* -->
-    <pointer-type-def type-id='type-id-12' size-in-bits='64' id='type-id-25'/>
-    <!-- GLint gluBuild3DMipmaps(GLenum, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, void*) -->
-    <function-decl name='gluBuild3DMipmaps' mangled-name='gluBuild3DMipmaps' filepath='libutil/mipmap.c' line='8482' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBuild3DMipmaps'>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='target' filepath='libutil/mipmap.c' line='8482' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='internalFormat' filepath='libutil/mipmap.c' line='8482' column='1'/>
-      <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='width' filepath='libutil/mipmap.c' line='8483' column='1'/>
-      <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='height' filepath='libutil/mipmap.c' line='8483' column='1'/>
-      <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='depth' filepath='libutil/mipmap.c' line='8483' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='format' filepath='libutil/mipmap.c' line='8484' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='type' filepath='libutil/mipmap.c' line='8484' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25' name='data' filepath='libutil/mipmap.c' line='8484' column='1'/>
-      <!-- typedef GLint -->
-      <return type-id='type-id-63'/>
-    </function-decl>
-    <!-- GLint gluBuild3DMipmapLevels(GLenum, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, GLint, GLint, GLint, void*) -->
-    <function-decl name='gluBuild3DMipmapLevels' mangled-name='gluBuild3DMipmapLevels' filepath='libutil/mipmap.c' line='8444' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBuild3DMipmapLevels'>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='target' filepath='libutil/mipmap.c' line='8444' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='internalFormat' filepath='libutil/mipmap.c' line='8444' column='1'/>
-      <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='width' filepath='libutil/mipmap.c' line='8445' column='1'/>
-      <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='height' filepath='libutil/mipmap.c' line='8445' column='1'/>
-      <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='depth' filepath='libutil/mipmap.c' line='8445' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='format' filepath='libutil/mipmap.c' line='8446' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='type' filepath='libutil/mipmap.c' line='8446' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='userLevel' filepath='libutil/mipmap.c' line='8447' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='baseLevel' filepath='libutil/mipmap.c' line='8447' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='maxLevel' filepath='libutil/mipmap.c' line='8447' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25' name='data' filepath='libutil/mipmap.c' line='8448' column='1'/>
-      <!-- typedef GLint -->
-      <return type-id='type-id-63'/>
-    </function-decl>
+    <pointer-type-def type-id='type-id-14' size-in-bits='64' id='type-id-35'/>
     <!-- GLint gluScaleImage(GLenum, GLsizei, GLsizei, GLenum, void*, GLsizei, GLsizei, GLenum, void*) -->
     <function-decl name='gluScaleImage' mangled-name='gluScaleImage' filepath='libutil/mipmap.c' line='3498' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluScaleImage'>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='format' filepath='libutil/mipmap.c' line='3498' column='1'/>
+      <parameter type-id='type-id-36' name='format' filepath='libutil/mipmap.c' line='3498' column='1'/>
       <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='widthin' filepath='libutil/mipmap.c' line='3498' column='1'/>
+      <parameter type-id='type-id-398' name='widthin' filepath='libutil/mipmap.c' line='3498' column='1'/>
       <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='heightin' filepath='libutil/mipmap.c' line='3498' column='1'/>
+      <parameter type-id='type-id-398' name='heightin' filepath='libutil/mipmap.c' line='3498' column='1'/>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='typein' filepath='libutil/mipmap.c' line='3499' column='1'/>
+      <parameter type-id='type-id-36' name='typein' filepath='libutil/mipmap.c' line='3499' column='1'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25' name='datain' filepath='libutil/mipmap.c' line='3499' column='1'/>
+      <parameter type-id='type-id-35' name='datain' filepath='libutil/mipmap.c' line='3499' column='1'/>
       <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='widthout' filepath='libutil/mipmap.c' line='3500' column='1'/>
+      <parameter type-id='type-id-398' name='widthout' filepath='libutil/mipmap.c' line='3500' column='1'/>
       <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='heightout' filepath='libutil/mipmap.c' line='3500' column='1'/>
+      <parameter type-id='type-id-398' name='heightout' filepath='libutil/mipmap.c' line='3500' column='1'/>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='typeout' filepath='libutil/mipmap.c' line='3500' column='1'/>
+      <parameter type-id='type-id-36' name='typeout' filepath='libutil/mipmap.c' line='3500' column='1'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25' name='dataout' filepath='libutil/mipmap.c' line='3501' column='1'/>
+      <parameter type-id='type-id-35' name='dataout' filepath='libutil/mipmap.c' line='3501' column='1'/>
       <!-- typedef GLint -->
-      <return type-id='type-id-63'/>
-    </function-decl>
-    <!-- GLint gluBuild1DMipmaps(GLenum, GLint, GLsizei, GLenum, GLenum, void*) -->
-    <function-decl name='gluBuild1DMipmaps' mangled-name='gluBuild1DMipmaps' filepath='libutil/mipmap.c' line='3672' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBuild1DMipmaps'>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='target' filepath='libutil/mipmap.c' line='3672' column='1'/>
-      <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='internalFormat' filepath='libutil/mipmap.c' line='3672' column='1'/>
-      <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='width' filepath='libutil/mipmap.c' line='3672' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='format' filepath='libutil/mipmap.c' line='3673' column='1'/>
-      <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='type' filepath='libutil/mipmap.c' line='3673' column='1'/>
-      <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25' name='data' filepath='libutil/mipmap.c' line='3674' column='1'/>
-      <!-- typedef GLint -->
-      <return type-id='type-id-63'/>
+      <return type-id='type-id-50'/>
     </function-decl>
     <!-- GLint gluBuild1DMipmapLevels(GLenum, GLint, GLsizei, GLenum, GLenum, GLint, GLint, GLint, void*) -->
     <function-decl name='gluBuild1DMipmapLevels' mangled-name='gluBuild1DMipmapLevels' filepath='libutil/mipmap.c' line='3643' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBuild1DMipmapLevels'>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='target' filepath='libutil/mipmap.c' line='3643' column='1'/>
+      <parameter type-id='type-id-36' name='target' filepath='libutil/mipmap.c' line='3643' column='1'/>
       <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='internalFormat' filepath='libutil/mipmap.c' line='3643' column='1'/>
+      <parameter type-id='type-id-50' name='internalFormat' filepath='libutil/mipmap.c' line='3643' column='1'/>
       <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='width' filepath='libutil/mipmap.c' line='3644' column='1'/>
+      <parameter type-id='type-id-398' name='width' filepath='libutil/mipmap.c' line='3644' column='1'/>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='format' filepath='libutil/mipmap.c' line='3645' column='1'/>
+      <parameter type-id='type-id-36' name='format' filepath='libutil/mipmap.c' line='3645' column='1'/>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='type' filepath='libutil/mipmap.c' line='3645' column='1'/>
+      <parameter type-id='type-id-36' name='type' filepath='libutil/mipmap.c' line='3645' column='1'/>
       <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='userLevel' filepath='libutil/mipmap.c' line='3646' column='1'/>
+      <parameter type-id='type-id-50' name='userLevel' filepath='libutil/mipmap.c' line='3646' column='1'/>
       <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='baseLevel' filepath='libutil/mipmap.c' line='3646' column='1'/>
+      <parameter type-id='type-id-50' name='baseLevel' filepath='libutil/mipmap.c' line='3646' column='1'/>
       <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='maxLevel' filepath='libutil/mipmap.c' line='3646' column='1'/>
+      <parameter type-id='type-id-50' name='maxLevel' filepath='libutil/mipmap.c' line='3646' column='1'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25' name='data' filepath='libutil/mipmap.c' line='3647' column='1'/>
+      <parameter type-id='type-id-35' name='data' filepath='libutil/mipmap.c' line='3647' column='1'/>
       <!-- typedef GLint -->
-      <return type-id='type-id-63'/>
+      <return type-id='type-id-50'/>
     </function-decl>
-    <!-- GLint gluBuild2DMipmaps(GLenum, GLint, GLsizei, GLsizei, GLenum, GLenum, void*) -->
-    <function-decl name='gluBuild2DMipmaps' mangled-name='gluBuild2DMipmaps' filepath='libutil/mipmap.c' line='4584' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBuild2DMipmaps'>
+    <!-- GLint gluBuild1DMipmaps(GLenum, GLint, GLsizei, GLenum, GLenum, void*) -->
+    <function-decl name='gluBuild1DMipmaps' mangled-name='gluBuild1DMipmaps' filepath='libutil/mipmap.c' line='3672' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBuild1DMipmaps'>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='target' filepath='libutil/mipmap.c' line='4584' column='1'/>
+      <parameter type-id='type-id-36' name='target' filepath='libutil/mipmap.c' line='3672' column='1'/>
       <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='internalFormat' filepath='libutil/mipmap.c' line='4584' column='1'/>
+      <parameter type-id='type-id-50' name='internalFormat' filepath='libutil/mipmap.c' line='3672' column='1'/>
       <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='width' filepath='libutil/mipmap.c' line='4585' column='1'/>
-      <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='height' filepath='libutil/mipmap.c' line='4585' column='1'/>
+      <parameter type-id='type-id-398' name='width' filepath='libutil/mipmap.c' line='3672' column='1'/>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='format' filepath='libutil/mipmap.c' line='4586' column='1'/>
+      <parameter type-id='type-id-36' name='format' filepath='libutil/mipmap.c' line='3673' column='1'/>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='type' filepath='libutil/mipmap.c' line='4586' column='1'/>
+      <parameter type-id='type-id-36' name='type' filepath='libutil/mipmap.c' line='3673' column='1'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25' name='data' filepath='libutil/mipmap.c' line='4587' column='1'/>
+      <parameter type-id='type-id-35' name='data' filepath='libutil/mipmap.c' line='3674' column='1'/>
       <!-- typedef GLint -->
-      <return type-id='type-id-63'/>
+      <return type-id='type-id-50'/>
     </function-decl>
     <!-- GLint gluBuild2DMipmapLevels(GLenum, GLint, GLsizei, GLsizei, GLenum, GLenum, GLint, GLint, GLint, void*) -->
     <function-decl name='gluBuild2DMipmapLevels' mangled-name='gluBuild2DMipmapLevels' filepath='libutil/mipmap.c' line='4552' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBuild2DMipmapLevels'>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='target' filepath='libutil/mipmap.c' line='4552' column='1'/>
+      <parameter type-id='type-id-36' name='target' filepath='libutil/mipmap.c' line='4552' column='1'/>
       <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='internalFormat' filepath='libutil/mipmap.c' line='4552' column='1'/>
+      <parameter type-id='type-id-50' name='internalFormat' filepath='libutil/mipmap.c' line='4552' column='1'/>
       <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='width' filepath='libutil/mipmap.c' line='4553' column='1'/>
+      <parameter type-id='type-id-398' name='width' filepath='libutil/mipmap.c' line='4553' column='1'/>
       <!-- parameter of type 'typedef GLsizei' -->
-      <parameter type-id='type-id-467' name='height' filepath='libutil/mipmap.c' line='4553' column='1'/>
+      <parameter type-id='type-id-398' name='height' filepath='libutil/mipmap.c' line='4553' column='1'/>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='format' filepath='libutil/mipmap.c' line='4554' column='1'/>
+      <parameter type-id='type-id-36' name='format' filepath='libutil/mipmap.c' line='4554' column='1'/>
       <!-- parameter of type 'typedef GLenum' -->
-      <parameter type-id='type-id-59' name='type' filepath='libutil/mipmap.c' line='4554' column='1'/>
+      <parameter type-id='type-id-36' name='type' filepath='libutil/mipmap.c' line='4554' column='1'/>
       <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='userLevel' filepath='libutil/mipmap.c' line='4555' column='1'/>
+      <parameter type-id='type-id-50' name='userLevel' filepath='libutil/mipmap.c' line='4555' column='1'/>
       <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='baseLevel' filepath='libutil/mipmap.c' line='4555' column='1'/>
+      <parameter type-id='type-id-50' name='baseLevel' filepath='libutil/mipmap.c' line='4555' column='1'/>
       <!-- parameter of type 'typedef GLint' -->
-      <parameter type-id='type-id-63' name='maxLevel' filepath='libutil/mipmap.c' line='4555' column='1'/>
+      <parameter type-id='type-id-50' name='maxLevel' filepath='libutil/mipmap.c' line='4555' column='1'/>
       <!-- parameter of type 'void*' -->
-      <parameter type-id='type-id-25' name='data' filepath='libutil/mipmap.c' line='4556' column='1'/>
+      <parameter type-id='type-id-35' name='data' filepath='libutil/mipmap.c' line='4556' column='1'/>
       <!-- typedef GLint -->
-      <return type-id='type-id-63'/>
+      <return type-id='type-id-50'/>
     </function-decl>
+    <!-- GLint gluBuild2DMipmaps(GLenum, GLint, GLsizei, GLsizei, GLenum, GLenum, void*) -->
+    <function-decl name='gluBuild2DMipmaps' mangled-name='gluBuild2DMipmaps' filepath='libutil/mipmap.c' line='4584' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBuild2DMipmaps'>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='target' filepath='libutil/mipmap.c' line='4584' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='internalFormat' filepath='libutil/mipmap.c' line='4584' column='1'/>
+      <!-- parameter of type 'typedef GLsizei' -->
+      <parameter type-id='type-id-398' name='width' filepath='libutil/mipmap.c' line='4585' column='1'/>
+      <!-- parameter of type 'typedef GLsizei' -->
+      <parameter type-id='type-id-398' name='height' filepath='libutil/mipmap.c' line='4585' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='format' filepath='libutil/mipmap.c' line='4586' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='type' filepath='libutil/mipmap.c' line='4586' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-35' name='data' filepath='libutil/mipmap.c' line='4587' column='1'/>
+      <!-- typedef GLint -->
+      <return type-id='type-id-50'/>
+    </function-decl>
+    <!-- GLint gluBuild3DMipmapLevels(GLenum, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, GLint, GLint, GLint, void*) -->
+    <function-decl name='gluBuild3DMipmapLevels' mangled-name='gluBuild3DMipmapLevels' filepath='libutil/mipmap.c' line='8444' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBuild3DMipmapLevels'>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='target' filepath='libutil/mipmap.c' line='8444' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='internalFormat' filepath='libutil/mipmap.c' line='8444' column='1'/>
+      <!-- parameter of type 'typedef GLsizei' -->
+      <parameter type-id='type-id-398' name='width' filepath='libutil/mipmap.c' line='8445' column='1'/>
+      <!-- parameter of type 'typedef GLsizei' -->
+      <parameter type-id='type-id-398' name='height' filepath='libutil/mipmap.c' line='8445' column='1'/>
+      <!-- parameter of type 'typedef GLsizei' -->
+      <parameter type-id='type-id-398' name='depth' filepath='libutil/mipmap.c' line='8445' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='format' filepath='libutil/mipmap.c' line='8446' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='type' filepath='libutil/mipmap.c' line='8446' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='userLevel' filepath='libutil/mipmap.c' line='8447' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='baseLevel' filepath='libutil/mipmap.c' line='8447' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='maxLevel' filepath='libutil/mipmap.c' line='8447' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-35' name='data' filepath='libutil/mipmap.c' line='8448' column='1'/>
+      <!-- typedef GLint -->
+      <return type-id='type-id-50'/>
+    </function-decl>
+    <!-- GLint gluBuild3DMipmaps(GLenum, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, void*) -->
+    <function-decl name='gluBuild3DMipmaps' mangled-name='gluBuild3DMipmaps' filepath='libutil/mipmap.c' line='8482' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluBuild3DMipmaps'>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='target' filepath='libutil/mipmap.c' line='8482' column='1'/>
+      <!-- parameter of type 'typedef GLint' -->
+      <parameter type-id='type-id-50' name='internalFormat' filepath='libutil/mipmap.c' line='8482' column='1'/>
+      <!-- parameter of type 'typedef GLsizei' -->
+      <parameter type-id='type-id-398' name='width' filepath='libutil/mipmap.c' line='8483' column='1'/>
+      <!-- parameter of type 'typedef GLsizei' -->
+      <parameter type-id='type-id-398' name='height' filepath='libutil/mipmap.c' line='8483' column='1'/>
+      <!-- parameter of type 'typedef GLsizei' -->
+      <parameter type-id='type-id-398' name='depth' filepath='libutil/mipmap.c' line='8483' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='format' filepath='libutil/mipmap.c' line='8484' column='1'/>
+      <!-- parameter of type 'typedef GLenum' -->
+      <parameter type-id='type-id-36' name='type' filepath='libutil/mipmap.c' line='8484' column='1'/>
+      <!-- parameter of type 'void*' -->
+      <parameter type-id='type-id-35' name='data' filepath='libutil/mipmap.c' line='8484' column='1'/>
+      <!-- typedef GLint -->
+      <return type-id='type-id-50'/>
+    </function-decl>
+    <!-- void -->
+    <type-decl name='void' id='type-id-14'/>
   </abi-instr>
   <abi-instr address-size='64' path='libutil/project.c' comp-dir-path='/tmp/legendre/spack-stage/spack-stage-T0fsxk/Mesa-8.0.5/src/glu/sgi' language='LANG_C99'>
     <!-- double -->
-    <type-decl name='double' size-in-bits='64' id='type-id-463'/>
+    <type-decl name='double' size-in-bits='64' id='type-id-399'/>
     <!-- typedef double GLdouble -->
-    <typedef-decl name='GLdouble' type-id='type-id-463' filepath='../../../include/GL/gl.h' line='162' column='1' id='type-id-397'/>
+    <typedef-decl name='GLdouble' type-id='type-id-399' filepath='../../../include/GL/gl.h' line='162' column='1' id='type-id-314'/>
     <!-- typedef double GLclampd -->
-    <typedef-decl name='GLclampd' type-id='type-id-463' filepath='../../../include/GL/gl.h' line='163' column='1' id='type-id-468'/>
+    <typedef-decl name='GLclampd' type-id='type-id-399' filepath='../../../include/GL/gl.h' line='163' column='1' id='type-id-400'/>
     <!-- GLdouble* -->
-    <pointer-type-def type-id='type-id-397' size-in-bits='64' id='type-id-462'/>
+    <pointer-type-def type-id='type-id-314' size-in-bits='64' id='type-id-392'/>
     <!-- GLint* -->
-    <pointer-type-def type-id='type-id-63' size-in-bits='64' id='type-id-469'/>
+    <pointer-type-def type-id='type-id-50' size-in-bits='64' id='type-id-401'/>
     <!-- const GLdouble -->
-    <qualified-type-def type-id='type-id-397' const='yes' id='type-id-470'/>
+    <qualified-type-def type-id='type-id-314' const='yes' id='type-id-402'/>
     <!-- const GLdouble* -->
-    <pointer-type-def type-id='type-id-470' size-in-bits='64' id='type-id-471'/>
+    <pointer-type-def type-id='type-id-402' size-in-bits='64' id='type-id-403'/>
     <!-- const GLint -->
-    <qualified-type-def type-id='type-id-63' const='yes' id='type-id-90'/>
+    <qualified-type-def type-id='type-id-50' const='yes' id='type-id-404'/>
     <!-- const GLint* -->
-    <pointer-type-def type-id='type-id-90' size-in-bits='64' id='type-id-62'/>
-    <!-- GLint gluProject(GLdouble, GLdouble, GLdouble, const GLdouble*, const GLdouble*, const GLint*, GLdouble*, GLdouble*, GLdouble*) -->
-    <function-decl name='gluProject' mangled-name='gluProject' filepath='libutil/project.c' line='234' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluProject'>
+    <pointer-type-def type-id='type-id-404' size-in-bits='64' id='type-id-47'/>
+    <!-- void gluOrtho2D(GLdouble, GLdouble, GLdouble, GLdouble) -->
+    <function-decl name='gluOrtho2D' mangled-name='gluOrtho2D' filepath='libutil/project.c' line='57' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluOrtho2D'>
       <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='objx' filepath='libutil/project.c' line='234' column='1'/>
+      <parameter type-id='type-id-314' name='left' filepath='libutil/project.c' line='57' column='1'/>
       <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='objy' filepath='libutil/project.c' line='234' column='1'/>
+      <parameter type-id='type-id-314' name='right' filepath='libutil/project.c' line='57' column='1'/>
       <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='objz' filepath='libutil/project.c' line='234' column='1'/>
-      <!-- parameter of type 'const GLdouble*' -->
-      <parameter type-id='type-id-471' name='modelMatrix' filepath='libutil/project.c' line='235' column='1'/>
-      <!-- parameter of type 'const GLdouble*' -->
-      <parameter type-id='type-id-471' name='projMatrix' filepath='libutil/project.c' line='236' column='1'/>
-      <!-- parameter of type 'const GLint*' -->
-      <parameter type-id='type-id-62' name='viewport' filepath='libutil/project.c' line='237' column='1'/>
-      <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462' name='winx' filepath='libutil/project.c' line='238' column='1'/>
-      <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462' name='winy' filepath='libutil/project.c' line='238' column='1'/>
-      <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462' name='winz' filepath='libutil/project.c' line='238' column='1'/>
-      <!-- typedef GLint -->
-      <return type-id='type-id-63'/>
-    </function-decl>
-    <!-- GLint gluUnProject(GLdouble, GLdouble, GLdouble, const GLdouble*, const GLdouble*, const GLint*, GLdouble*, GLdouble*, GLdouble*) -->
-    <function-decl name='gluUnProject' mangled-name='gluUnProject' filepath='libutil/project.c' line='269' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluUnProject'>
+      <parameter type-id='type-id-314' name='bottom' filepath='libutil/project.c' line='57' column='1'/>
       <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='winx' filepath='libutil/project.c' line='269' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='winy' filepath='libutil/project.c' line='269' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='winz' filepath='libutil/project.c' line='269' column='1'/>
-      <!-- parameter of type 'const GLdouble*' -->
-      <parameter type-id='type-id-471' name='modelMatrix' filepath='libutil/project.c' line='270' column='1'/>
-      <!-- parameter of type 'const GLdouble*' -->
-      <parameter type-id='type-id-471' name='projMatrix' filepath='libutil/project.c' line='271' column='1'/>
-      <!-- parameter of type 'const GLint*' -->
-      <parameter type-id='type-id-62' name='viewport' filepath='libutil/project.c' line='272' column='1'/>
-      <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462' name='objx' filepath='libutil/project.c' line='273' column='1'/>
-      <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462' name='objy' filepath='libutil/project.c' line='273' column='1'/>
-      <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462' name='objz' filepath='libutil/project.c' line='273' column='1'/>
-      <!-- typedef GLint -->
-      <return type-id='type-id-63'/>
-    </function-decl>
-    <!-- GLint gluUnProject4(GLdouble, GLdouble, GLdouble, GLdouble, const GLdouble*, const GLdouble*, const GLint*, GLclampd, GLclampd, GLdouble*, GLdouble*, GLdouble*, GLdouble*) -->
-    <function-decl name='gluUnProject4' mangled-name='gluUnProject4' filepath='libutil/project.c' line='308' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluUnProject4'>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='winx' filepath='libutil/project.c' line='308' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='winy' filepath='libutil/project.c' line='308' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='winz' filepath='libutil/project.c' line='308' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='clipw' filepath='libutil/project.c' line='308' column='1'/>
-      <!-- parameter of type 'const GLdouble*' -->
-      <parameter type-id='type-id-471' name='modelMatrix' filepath='libutil/project.c' line='309' column='1'/>
-      <!-- parameter of type 'const GLdouble*' -->
-      <parameter type-id='type-id-471' name='projMatrix' filepath='libutil/project.c' line='310' column='1'/>
-      <!-- parameter of type 'const GLint*' -->
-      <parameter type-id='type-id-62' name='viewport' filepath='libutil/project.c' line='311' column='1'/>
-      <!-- parameter of type 'typedef GLclampd' -->
-      <parameter type-id='type-id-468' name='nearVal' filepath='libutil/project.c' line='312' column='1'/>
-      <!-- parameter of type 'typedef GLclampd' -->
-      <parameter type-id='type-id-468' name='farVal' filepath='libutil/project.c' line='312' column='1'/>
-      <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462' name='objx' filepath='libutil/project.c' line='313' column='1'/>
-      <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462' name='objy' filepath='libutil/project.c' line='313' column='1'/>
-      <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462' name='objz' filepath='libutil/project.c' line='313' column='1'/>
-      <!-- parameter of type 'GLdouble*' -->
-      <parameter type-id='type-id-462' name='objw' filepath='libutil/project.c' line='314' column='1'/>
-      <!-- typedef GLint -->
-      <return type-id='type-id-63'/>
-    </function-decl>
-    <!-- void gluPickMatrix(GLdouble, GLdouble, GLdouble, GLdouble, GLint*) -->
-    <function-decl name='gluPickMatrix' mangled-name='gluPickMatrix' filepath='libutil/project.c' line='348' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluPickMatrix'>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='x' filepath='libutil/project.c' line='348' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='y' filepath='libutil/project.c' line='348' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='deltax' filepath='libutil/project.c' line='348' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='deltay' filepath='libutil/project.c' line='348' column='1'/>
-      <!-- parameter of type 'GLint*' -->
-      <parameter type-id='type-id-469' name='viewport' filepath='libutil/project.c' line='349' column='1'/>
+      <parameter type-id='type-id-314' name='top' filepath='libutil/project.c' line='57' column='1'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
-    </function-decl>
-    <!-- void gluLookAt(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble) -->
-    <function-decl name='gluLookAt' mangled-name='gluLookAt' filepath='libutil/project.c' line='108' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluLookAt'>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='eyex' filepath='libutil/project.c' line='108' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='eyey' filepath='libutil/project.c' line='108' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='eyez' filepath='libutil/project.c' line='108' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='centerx' filepath='libutil/project.c' line='108' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='centery' filepath='libutil/project.c' line='109' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='centerz' filepath='libutil/project.c' line='109' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='upx' filepath='libutil/project.c' line='109' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='upy' filepath='libutil/project.c' line='109' column='1'/>
-      <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='upz' filepath='libutil/project.c' line='110' column='1'/>
-      <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-decl>
     <!-- void gluPerspective(GLdouble, GLdouble, GLdouble, GLdouble) -->
     <function-decl name='gluPerspective' mangled-name='gluPerspective' filepath='libutil/project.c' line='65' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluPerspective'>
       <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='fovy' filepath='libutil/project.c' line='65' column='1'/>
+      <parameter type-id='type-id-314' name='fovy' filepath='libutil/project.c' line='65' column='1'/>
       <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='aspect' filepath='libutil/project.c' line='65' column='1'/>
+      <parameter type-id='type-id-314' name='aspect' filepath='libutil/project.c' line='65' column='1'/>
       <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='zNear' filepath='libutil/project.c' line='65' column='1'/>
+      <parameter type-id='type-id-314' name='zNear' filepath='libutil/project.c' line='65' column='1'/>
       <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='zFar' filepath='libutil/project.c' line='65' column='1'/>
+      <parameter type-id='type-id-314' name='zFar' filepath='libutil/project.c' line='65' column='1'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
     </function-decl>
-    <!-- void gluOrtho2D(GLdouble, GLdouble, GLdouble, GLdouble) -->
-    <function-decl name='gluOrtho2D' mangled-name='gluOrtho2D' filepath='libutil/project.c' line='57' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluOrtho2D'>
+    <!-- void gluLookAt(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble) -->
+    <function-decl name='gluLookAt' mangled-name='gluLookAt' filepath='libutil/project.c' line='108' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluLookAt'>
       <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='left' filepath='libutil/project.c' line='57' column='1'/>
+      <parameter type-id='type-id-314' name='eyex' filepath='libutil/project.c' line='108' column='1'/>
       <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='right' filepath='libutil/project.c' line='57' column='1'/>
+      <parameter type-id='type-id-314' name='eyey' filepath='libutil/project.c' line='108' column='1'/>
       <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='bottom' filepath='libutil/project.c' line='57' column='1'/>
+      <parameter type-id='type-id-314' name='eyez' filepath='libutil/project.c' line='108' column='1'/>
       <!-- parameter of type 'typedef GLdouble' -->
-      <parameter type-id='type-id-397' name='top' filepath='libutil/project.c' line='57' column='1'/>
+      <parameter type-id='type-id-314' name='centerx' filepath='libutil/project.c' line='108' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='centery' filepath='libutil/project.c' line='109' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='centerz' filepath='libutil/project.c' line='109' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='upx' filepath='libutil/project.c' line='109' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='upy' filepath='libutil/project.c' line='109' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='upz' filepath='libutil/project.c' line='110' column='1'/>
       <!-- void -->
-      <return type-id='type-id-12'/>
+      <return type-id='type-id-14'/>
+    </function-decl>
+    <!-- GLint gluProject(GLdouble, GLdouble, GLdouble, const GLdouble*, const GLdouble*, const GLint*, GLdouble*, GLdouble*, GLdouble*) -->
+    <function-decl name='gluProject' mangled-name='gluProject' filepath='libutil/project.c' line='234' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluProject'>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='objx' filepath='libutil/project.c' line='234' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='objy' filepath='libutil/project.c' line='234' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='objz' filepath='libutil/project.c' line='234' column='1'/>
+      <!-- parameter of type 'const GLdouble*' -->
+      <parameter type-id='type-id-403' name='modelMatrix' filepath='libutil/project.c' line='235' column='1'/>
+      <!-- parameter of type 'const GLdouble*' -->
+      <parameter type-id='type-id-403' name='projMatrix' filepath='libutil/project.c' line='236' column='1'/>
+      <!-- parameter of type 'const GLint*' -->
+      <parameter type-id='type-id-47' name='viewport' filepath='libutil/project.c' line='237' column='1'/>
+      <!-- parameter of type 'GLdouble*' -->
+      <parameter type-id='type-id-392' name='winx' filepath='libutil/project.c' line='238' column='1'/>
+      <!-- parameter of type 'GLdouble*' -->
+      <parameter type-id='type-id-392' name='winy' filepath='libutil/project.c' line='238' column='1'/>
+      <!-- parameter of type 'GLdouble*' -->
+      <parameter type-id='type-id-392' name='winz' filepath='libutil/project.c' line='238' column='1'/>
+      <!-- typedef GLint -->
+      <return type-id='type-id-50'/>
+    </function-decl>
+    <!-- GLint gluUnProject(GLdouble, GLdouble, GLdouble, const GLdouble*, const GLdouble*, const GLint*, GLdouble*, GLdouble*, GLdouble*) -->
+    <function-decl name='gluUnProject' mangled-name='gluUnProject' filepath='libutil/project.c' line='269' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='gluUnProject'>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='winx' filepath='libutil/project.c' line='269' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='winy' filepath='libutil/project.c' line='269' column='1'/>
+      <!-- parameter of type 'typedef GLdouble' -->
+      <parameter type-id='type-id-314' name='winz' filepath='libutil/project.c' line='269' column='1'/>
+      <!-- parameter of type 'const GLdouble*' -->
+      <parameter type-id='type-id-403' name='modelMatrix' filepath='libutil/project.c' line='270' column='1'/>
+      <!-- parameter of type 'const GLdouble*' -->
+      <parameter type-id='type-id-403' name='projMatrix' filepath='libutil/project.c' line='271' column='1'/>
+      <!-- parameter of type 'const GLint*' -->
+      <parameter type-id='type-id-47' name='viewport' filepath='libutil/project.c' line='272' column='1'/>
+      <!-- parameter of type 'GLdouble*' -->
+      <parameter type-id='type-id-392' name='objx' filepath='libutil/project.c' line='273' column='1'/>
+      <!-- parameter of type 'GLdouble*' -->
+      <parameter type-id='type-id-392' name='objy' filepath='libutil/project.c' line='273' column='1'/>
+      <!-- parameter of type 'GLdouble*' -->
+      <parameter type-id='type-id-392' name='objz' filepath='libutil/project.c' line='273' column='1'/>
+      <!-- typedef GLint -->
+      <return type-id='type-id-50'/>
+    </function-decl>
+    <!-- GLint gluUnProject4(GLdouble, GLdouble, GLdouble, GLdouble, const GLdouble*, const GLdouble*, cons