There was a bug when processing the DW_AT_ranges for a DIE where as soon as an overlapping address range was found, we would stop processing and further ranges in a DW_AT_ranges set of address ranges. This means the DIE, usually a DW_AT_compile_unit, would end up with a truncated list of address ranges. This would cause spurious errors to be emitted stating that a DIE was not contained in a parent's address ranges.
This has now been fixed and added a fix and a test.
Probably could use a more explicit name - "union_if_intersecting"?