{"abstract":"The length of an object array is treated as a reference and the last element is skipped.","category":"Garbage collector invariants","checks":6,"contract":"Precise tracing with per-class reference maps. Objects are word lists: words 0-1 are the header; object arrays keep their length in word 2 and elements in words 3..3+len-1 (anything after is padding); primitive arrays contain no references. Instance classes list [offset, count] runs of reference words and inherit all superclass runs. A reference word of 0 is null; a nonzero reference that is not an object id is reported as [object, word]. Return the reachable ids and the bad references.","evaluation_group":"w2-garbage-collector-invariants-oop-map-tracing","failed_approach":"Scanning to the end of the word list also traces padding after the elements.","family":"w2-garbage-collector-invariants-oop-map-tracing-array-element-range","id":"FA-90796","implementations":{"attempt":{"sha256":"354ddc14508044ce2f99f2db0e12819a5a5ab7999f1672fc3e74dd12a95bbdd3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(classes, objects, roots):\n    def ref_slots(o):\n        ob = objects[o]\n        cls = classes[ob['class']]\n        if cls['kind'] == 'objarray':\n            return list(range(3, len(ob['words'])))\n        if cls['kind'] == 'primarray':\n            return []\n        slots = []\n        c = ob['class']\n        while c is not None:\n            for off, cnt in classes[c]['maps']:\n                slots.extend(range(off, off + cnt))\n            c = classes[c]['super']\n        return slots\n    seen = set()\n    stack = list(roots)\n    bad = []\n    while stack:\n        o = stack.pop()\n        if o in seen:\n            continue\n        seen.add(o)\n        words = objects[o]['words']\n        for s in ref_slots(o):\n            v = words[s]\n            if v == 0:\n                continue\n            if v not in objects:\n                bad.append([o, s])\n                continue\n            stack.append(v)\n    return {'live': sorted(seen), 'bad': sorted(bad)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [106]),\n   {'bad': [], 'live': [106]})],\n [('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [107]),\n   {'bad': [], 'live': [107]})],\n [('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [105]),\n   {'bad': [], 'live': [105]})],\n [('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [106]),\n   {'bad': [], 'live': [106]})],\n [('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [107]),\n   {'bad': [], 'live': [107]})]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"106f460c7f347f4ce55b14ef43a0960547c8ebb0574edc3af2e84f8fef0514ab","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(classes, objects, roots):\n    def ref_slots(o):\n        ob = objects[o]\n        cls = classes[ob['class']]\n        if cls['kind'] == 'objarray':\n            return list(range(2, 2 + ob['words'][2]))\n        if cls['kind'] == 'primarray':\n            return []\n        slots = []\n        c = ob['class']\n        while c is not None:\n            for off, cnt in classes[c]['maps']:\n                slots.extend(range(off, off + cnt))\n            c = classes[c]['super']\n        return slots\n    seen = set()\n    stack = list(roots)\n    bad = []\n    while stack:\n        o = stack.pop()\n        if o in seen:\n            continue\n        seen.add(o)\n        words = objects[o]['words']\n        for s in ref_slots(o):\n            v = words[s]\n            if v == 0:\n                continue\n            if v not in objects:\n                bad.append([o, s])\n                continue\n            stack.append(v)\n    return {'live': sorted(seen), 'bad': sorted(bad)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [106]),\n   {'bad': [], 'live': [106]})],\n [('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [107]),\n   {'bad': [], 'live': [107]})],\n [('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [105]),\n   {'bad': [], 'live': [105]})],\n [('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [106]),\n   {'bad': [], 'live': [106]})],\n [('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [107]),\n   {'bad': [], 'live': [107]})]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"83b88a19f8ef29656bb5f53b04828216dd0677d2a8cfd5a82ca28f9598c83c1a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(classes, objects, roots):\n    def ref_slots(o):\n        ob = objects[o]\n        cls = classes[ob['class']]\n        if cls['kind'] == 'objarray':\n            return list(range(3, 3 + ob['words'][2]))\n        if cls['kind'] == 'primarray':\n            return []\n        slots = []\n        c = ob['class']\n        while c is not None:\n            for off, cnt in classes[c]['maps']:\n                slots.extend(range(off, off + cnt))\n            c = classes[c]['super']\n        return slots\n    seen = set()\n    stack = list(roots)\n    bad = []\n    while stack:\n        o = stack.pop()\n        if o in seen:\n            continue\n        seen.add(o)\n        words = objects[o]['words']\n        for s in ref_slots(o):\n            v = words[s]\n            if v == 0:\n                continue\n            if v not in objects:\n                bad.append([o, s])\n                continue\n            stack.append(v)\n    return {'live': sorted(seen), 'bad': sorted(bad)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 6, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [106]),\n   {'bad': [], 'live': [106]})],\n [('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 7, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [107]),\n   {'bad': [], 'live': [107]})],\n [('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 8, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [105]),\n   {'bad': [], 'live': [105]})],\n [('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 9, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [106]),\n   {'bad': [], 'live': [106]})],\n [('regression: trace through fields, arrays and subclasses',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [100]),\n   {'bad': [], 'live': [100, 101, 102, 103, 104, 107]}),\n  ('object array elements and trailing padding',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [102]),\n   {'bad': [], 'live': [102, 103, 104, 107]}),\n  ('primitive array contents are not references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [103]),\n   {'bad': [], 'live': [103]}),\n  ('inherited reference field of a subclass',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [104]),\n   {'bad': [], 'live': [104, 107]}),\n  ('integer field that equals an object id',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [109, 101]),\n   {'bad': [], 'live': [101, 105, 109]}),\n  ('control: base object without references',\n   ({'Base': {'kind': 'instance', 'maps': [[2, 1]], 'super': None},\n     'Derived': {'kind': 'instance', 'maps': [[4, 2]], 'super': 'Base'},\n     'Leaf': {'kind': 'instance', 'maps': [], 'super': 'Derived'},\n     'Object[]': {'kind': 'objarray', 'maps': [], 'super': None},\n     'int[]': {'kind': 'primarray', 'maps': [], 'super': None}},\n    {100: {'class': 'Derived', 'words': [51966, 0, 101, 7, 102, 0, 999]},\n     101: {'class': 'Base', 'words': [51966, 0, 0, 105]},\n     102: {'class': 'Object[]', 'words': [51966, 0, 2, 103, 104, 106]},\n     103: {'class': 'int[]', 'words': [51966, 0, 3, 106, 10, 107]},\n     104: {'class': 'Leaf', 'words': [51966, 0, 0, 108, 0, 107, 0]},\n     105: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     106: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     107: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     108: {'class': 'Base', 'words': [51966, 0, 0, 0]},\n     109: {'class': 'Derived', 'words': [51966, 0, 105, 106, 0, 0, 0]}},\n    [107]),\n   {'bad': [], 'live': [107]})]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic, bounded teaching model of one garbage-collector mechanism with stipulated rules; it is not a production collector and claims no conformance to any particular runtime. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-garbage-collector-invariants-oop-map-tracing-array-element-range","generated_at":"2026-09-29T14:51:29.925139+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Tracing must follow exactly the reference words described by type metadata, no more and no less.","repair":"Scan words 3 .. 3 + length - 1.","root_cause":"Element scanning starts at the length word.","sha256":"58c44ab419149191553c3179e9dddc01a0ea230e6dfb1c7fca76b466ed354b93","title":"Oop maps: array length word traced as an element · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.785,"exit_code":1,"observations":[{"actual":{"bad":[],"live":[100,101,102,103,104,106,107]},"check":"regression: trace through fields, arrays and subclasses","expected":{"bad":[],"live":[100,101,102,103,104,107]},"passed":false},{"actual":{"bad":[],"live":[102,103,104,106,107]},"check":"object array elements and trailing padding","expected":{"bad":[],"live":[102,103,104,107]},"passed":false},{"actual":{"bad":[],"live":[103]},"check":"primitive array contents are not references","expected":{"bad":[],"live":[103]},"passed":true},{"actual":{"bad":[],"live":[104,107]},"check":"inherited reference field of a subclass","expected":{"bad":[],"live":[104,107]},"passed":true},{"actual":{"bad":[],"live":[101,105,109]},"check":"integer field that equals an object id","expected":{"bad":[],"live":[101,105,109]},"passed":true},{"actual":{"bad":[],"live":[106]},"check":"control: base object without references","expected":{"bad":[],"live":[106]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: trace through fields, arrays and subclasses\", \"actual\": {\"live\": [100, 101, 102, 103, 104, 106, 107], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [100, 101, 102, 103, 104, 107]}, \"passed\": false}, {\"check\": \"object array elements and trailing padding\", \"actual\": {\"live\": [102, 103, 104, 106, 107], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [102, 103, 104, 107]}, \"passed\": false}, {\"check\": \"primitive array contents are not references\", \"actual\": {\"live\": [103], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [103]}, \"passed\": true}, {\"check\": \"inherited reference field of a subclass\", \"actual\": {\"live\": [104, 107], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [104, 107]}, \"passed\": true}, {\"check\": \"integer field that equals an object id\", \"actual\": {\"live\": [101, 105, 109], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [101, 105, 109]}, \"passed\": true}, {\"check\": \"control: base object without references\", \"actual\": {\"live\": [106], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [106]}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":46.944,"exit_code":1,"observations":[{"actual":{"bad":[[102,2]],"live":[100,101,102,103]},"check":"regression: trace through fields, arrays and subclasses","expected":{"bad":[],"live":[100,101,102,103,104,107]},"passed":false},{"actual":{"bad":[[102,2]],"live":[102,103]},"check":"object array elements and trailing padding","expected":{"bad":[],"live":[102,103,104,107]},"passed":false},{"actual":{"bad":[],"live":[103]},"check":"primitive array contents are not references","expected":{"bad":[],"live":[103]},"passed":true},{"actual":{"bad":[],"live":[104,107]},"check":"inherited reference field of a subclass","expected":{"bad":[],"live":[104,107]},"passed":true},{"actual":{"bad":[],"live":[101,105,109]},"check":"integer field that equals an object id","expected":{"bad":[],"live":[101,105,109]},"passed":true},{"actual":{"bad":[],"live":[106]},"check":"control: base object without references","expected":{"bad":[],"live":[106]},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: trace through fields, arrays and subclasses\", \"actual\": {\"live\": [100, 101, 102, 103], \"bad\": [[102, 2]]}, \"expected\": {\"bad\": [], \"live\": [100, 101, 102, 103, 104, 107]}, \"passed\": false}, {\"check\": \"object array elements and trailing padding\", \"actual\": {\"live\": [102, 103], \"bad\": [[102, 2]]}, \"expected\": {\"bad\": [], \"live\": [102, 103, 104, 107]}, \"passed\": false}, {\"check\": \"primitive array contents are not references\", \"actual\": {\"live\": [103], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [103]}, \"passed\": true}, {\"check\": \"inherited reference field of a subclass\", \"actual\": {\"live\": [104, 107], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [104, 107]}, \"passed\": true}, {\"check\": \"integer field that equals an object id\", \"actual\": {\"live\": [101, 105, 109], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [101, 105, 109]}, \"passed\": true}, {\"check\": \"control: base object without references\", \"actual\": {\"live\": [106], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [106]}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.985,"exit_code":0,"observations":[{"actual":{"bad":[],"live":[100,101,102,103,104,107]},"check":"regression: trace through fields, arrays and subclasses","expected":{"bad":[],"live":[100,101,102,103,104,107]},"passed":true},{"actual":{"bad":[],"live":[102,103,104,107]},"check":"object array elements and trailing padding","expected":{"bad":[],"live":[102,103,104,107]},"passed":true},{"actual":{"bad":[],"live":[103]},"check":"primitive array contents are not references","expected":{"bad":[],"live":[103]},"passed":true},{"actual":{"bad":[],"live":[104,107]},"check":"inherited reference field of a subclass","expected":{"bad":[],"live":[104,107]},"passed":true},{"actual":{"bad":[],"live":[101,105,109]},"check":"integer field that equals an object id","expected":{"bad":[],"live":[101,105,109]},"passed":true},{"actual":{"bad":[],"live":[106]},"check":"control: base object without references","expected":{"bad":[],"live":[106]},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: trace through fields, arrays and subclasses\", \"actual\": {\"live\": [100, 101, 102, 103, 104, 107], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [100, 101, 102, 103, 104, 107]}, \"passed\": true}, {\"check\": \"object array elements and trailing padding\", \"actual\": {\"live\": [102, 103, 104, 107], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [102, 103, 104, 107]}, \"passed\": true}, {\"check\": \"primitive array contents are not references\", \"actual\": {\"live\": [103], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [103]}, \"passed\": true}, {\"check\": \"inherited reference field of a subclass\", \"actual\": {\"live\": [104, 107], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [104, 107]}, \"passed\": true}, {\"check\": \"integer field that equals an object id\", \"actual\": {\"live\": [101, 105, 109], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [101, 105, 109]}, \"passed\": true}, {\"check\": \"control: base object without references\", \"actual\": {\"live\": [106], \"bad\": []}, \"expected\": {\"bad\": [], \"live\": [106]}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}