{"abstract":"Every reference after the first 8-byte constant resolves to its neighbour.","category":"Bytecode virtual machines","checks":9,"contract":"pool lists entries in file order; indexes start at 1 and Long/Double entries occupy two indexes (the second is unusable). Resolution: Utf8 -> text; Integer/Long/Double -> value; String -> quoted Utf8 text; Class -> Utf8 binary name with \"/\" turned into \".\"; NameAndType -> \"name:descriptor\"; Methodref and Fieldref -> \"Class.name:descriptor\" where the owner must be a Class entry and the second index a NameAndType. Any index that is missing or of the wrong kind yields [\"bad-ref\", index].","evaluation_group":"w2-bytecode-virtual-machines-constant-pool-resolution","failed_approach":"Handling Long but not Double still shifts every index after a Double.","family":"w2-bytecode-virtual-machines-constant-pool-resolution-two-slot-constants","id":"FA-90016","implementations":{"attempt":{"sha256":"b5cb114a1633c2d6fcb60476eb7cb461e71ff6305544c6a012030b6c60a68130","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(pool, queries):\n    table = {}\n    idx = 1\n    for e in pool:\n        table[idx] = e\n        idx += 2 if e[0] == 'Long' else 1\n    def utf(i):\n        e = table.get(i)\n        if e is None or e[0] != 'Utf8':\n            raise LookupError(i)\n        return e[1]\n    def res(i):\n        e = table.get(i)\n        if e is None:\n            raise LookupError(i)\n        kind = e[0]\n        if kind == 'Utf8':\n            return e[1]\n        if kind in ('Integer', 'Long', 'Double'):\n            return e[1]\n        if kind == 'String':\n            return '\"' + utf(e[1]) + '\"'\n        if kind == 'Class':\n            return utf(e[1]).replace('/', '.')\n        if kind == 'NameAndType':\n            return utf(e[1]) + ':' + utf(e[2])\n        if kind in ('Methodref', 'Fieldref'):\n            c = table.get(e[1])\n            if c is None or c[0] != 'Class':\n                raise LookupError(e[1])\n            n = table.get(e[2])\n            if n is None or n[0] != 'NameAndType':\n                raise LookupError(e[2])\n            return res(e[1]) + '.' + res(e[2])\n        raise LookupError(i)\n    out = []\n    for q in queries:\n        try:\n            out.append(res(q))\n        except LookupError as err:\n            out.append(['bad-ref', err.args[0]])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression: method reference',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [6]),\n   ['java.lang.String.length1:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [9, 8]),\n   [41, ['bad-ref', 8]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [12, 18]),\n   ['\"length1\"', 7]),\n  ('field reference',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [13]),\n   ['java.lang.String.length1:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [14]),\n   [['bad-ref', 1]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [15]),\n   [['bad-ref', 9]]),\n  ('nested package class name',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [17, 2]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [5]),\n   ['length1:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [0]),\n   [['bad-ref', 0]])],\n [('regression: method reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [7]),\n   ['java.lang.String.length2:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [10, 9]),\n   [42, ['bad-ref', 9]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [13, 19]),\n   ['\"length2\"', 14]),\n  ('field reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [14]),\n   ['java.lang.String.length2:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [15]),\n   [['bad-ref', 2]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [16]),\n   [['bad-ref', 10]]),\n  ('nested package class name',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [18, 3]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [6]),\n   ['length2:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [0]),\n   [['bad-ref', 0]])],\n [('regression: method reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [8]),\n   ['java.lang.String.length3:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [11, 10]),\n   [43, ['bad-ref', 10]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [14, 20]),\n   ['\"length3\"', 21]),\n  ('field reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [15]),\n   ['java.lang.String.length3:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [16]),\n   [['bad-ref', 3]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [17]),\n   [['bad-ref', 11]]),\n  ('nested package class name',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [19, 4]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [7]),\n   ['length3:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [0]),\n   [['bad-ref', 0]])],\n [('regression: method reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [9]),\n   ['java.lang.String.length4:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [12, 11]),\n   [44, ['bad-ref', 11]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [15, 21]),\n   ['\"length4\"', 28]),\n  ('field reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [16]),\n   ['java.lang.String.length4:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [17]),\n   [['bad-ref', 4]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [18]),\n   [['bad-ref', 12]]),\n  ('nested package class name',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [20, 5]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [8]),\n   ['length4:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [0]),\n   [['bad-ref', 0]])],\n [('regression: method reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [10]),\n   ['java.lang.String.length5:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [13, 12]),\n   [45, ['bad-ref', 12]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [16, 22]),\n   ['\"length5\"', 35]),\n  ('field reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [17]),\n   ['java.lang.String.length5:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [18]),\n   [['bad-ref', 5]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [19]),\n   [['bad-ref', 13]]),\n  ('nested package class name',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [21, 6]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [9]),\n   ['length5:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [0]),\n   [['bad-ref', 0]])]]\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":"5fe660245bd9c62c188fa23acae4777e8a9ef2b523cd4341b5b27bf5aec1c462","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(pool, queries):\n    table = {}\n    idx = 1\n    for e in pool:\n        table[idx] = e\n        idx += 1\n    def utf(i):\n        e = table.get(i)\n        if e is None or e[0] != 'Utf8':\n            raise LookupError(i)\n        return e[1]\n    def res(i):\n        e = table.get(i)\n        if e is None:\n            raise LookupError(i)\n        kind = e[0]\n        if kind == 'Utf8':\n            return e[1]\n        if kind in ('Integer', 'Long', 'Double'):\n            return e[1]\n        if kind == 'String':\n            return '\"' + utf(e[1]) + '\"'\n        if kind == 'Class':\n            return utf(e[1]).replace('/', '.')\n        if kind == 'NameAndType':\n            return utf(e[1]) + ':' + utf(e[2])\n        if kind in ('Methodref', 'Fieldref'):\n            c = table.get(e[1])\n            if c is None or c[0] != 'Class':\n                raise LookupError(e[1])\n            n = table.get(e[2])\n            if n is None or n[0] != 'NameAndType':\n                raise LookupError(e[2])\n            return res(e[1]) + '.' + res(e[2])\n        raise LookupError(i)\n    out = []\n    for q in queries:\n        try:\n            out.append(res(q))\n        except LookupError as err:\n            out.append(['bad-ref', err.args[0]])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression: method reference',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [6]),\n   ['java.lang.String.length1:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [9, 8]),\n   [41, ['bad-ref', 8]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [12, 18]),\n   ['\"length1\"', 7]),\n  ('field reference',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [13]),\n   ['java.lang.String.length1:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [14]),\n   [['bad-ref', 1]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [15]),\n   [['bad-ref', 9]]),\n  ('nested package class name',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [17, 2]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [5]),\n   ['length1:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [0]),\n   [['bad-ref', 0]])],\n [('regression: method reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [7]),\n   ['java.lang.String.length2:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [10, 9]),\n   [42, ['bad-ref', 9]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [13, 19]),\n   ['\"length2\"', 14]),\n  ('field reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [14]),\n   ['java.lang.String.length2:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [15]),\n   [['bad-ref', 2]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [16]),\n   [['bad-ref', 10]]),\n  ('nested package class name',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [18, 3]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [6]),\n   ['length2:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [0]),\n   [['bad-ref', 0]])],\n [('regression: method reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [8]),\n   ['java.lang.String.length3:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [11, 10]),\n   [43, ['bad-ref', 10]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [14, 20]),\n   ['\"length3\"', 21]),\n  ('field reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [15]),\n   ['java.lang.String.length3:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [16]),\n   [['bad-ref', 3]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [17]),\n   [['bad-ref', 11]]),\n  ('nested package class name',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [19, 4]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [7]),\n   ['length3:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [0]),\n   [['bad-ref', 0]])],\n [('regression: method reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [9]),\n   ['java.lang.String.length4:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [12, 11]),\n   [44, ['bad-ref', 11]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [15, 21]),\n   ['\"length4\"', 28]),\n  ('field reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [16]),\n   ['java.lang.String.length4:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [17]),\n   [['bad-ref', 4]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [18]),\n   [['bad-ref', 12]]),\n  ('nested package class name',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [20, 5]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [8]),\n   ['length4:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [0]),\n   [['bad-ref', 0]])],\n [('regression: method reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [10]),\n   ['java.lang.String.length5:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [13, 12]),\n   [45, ['bad-ref', 12]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [16, 22]),\n   ['\"length5\"', 35]),\n  ('field reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [17]),\n   ['java.lang.String.length5:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [18]),\n   [['bad-ref', 5]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [19]),\n   [['bad-ref', 13]]),\n  ('nested package class name',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [21, 6]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [9]),\n   ['length5:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [0]),\n   [['bad-ref', 0]])]]\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":"d020ccfc84b79f79d10e7fa7ac224ca36488f004d53b7f17892c874fe55d3a19","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(pool, queries):\n    table = {}\n    idx = 1\n    for e in pool:\n        table[idx] = e\n        idx += 2 if e[0] in ('Long', 'Double') else 1\n    def utf(i):\n        e = table.get(i)\n        if e is None or e[0] != 'Utf8':\n            raise LookupError(i)\n        return e[1]\n    def res(i):\n        e = table.get(i)\n        if e is None:\n            raise LookupError(i)\n        kind = e[0]\n        if kind == 'Utf8':\n            return e[1]\n        if kind in ('Integer', 'Long', 'Double'):\n            return e[1]\n        if kind == 'String':\n            return '\"' + utf(e[1]) + '\"'\n        if kind == 'Class':\n            return utf(e[1]).replace('/', '.')\n        if kind == 'NameAndType':\n            return utf(e[1]) + ':' + utf(e[2])\n        if kind in ('Methodref', 'Fieldref'):\n            c = table.get(e[1])\n            if c is None or c[0] != 'Class':\n                raise LookupError(e[1])\n            n = table.get(e[2])\n            if n is None or n[0] != 'NameAndType':\n                raise LookupError(e[2])\n            return res(e[1]) + '.' + res(e[2])\n        raise LookupError(i)\n    out = []\n    for q in queries:\n        try:\n            out.append(res(q))\n        except LookupError as err:\n            out.append(['bad-ref', err.args[0]])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression: method reference',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [6]),\n   ['java.lang.String.length1:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [9, 8]),\n   [41, ['bad-ref', 8]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [12, 18]),\n   ['\"length1\"', 7]),\n  ('field reference',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [13]),\n   ['java.lang.String.length1:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [14]),\n   [['bad-ref', 1]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [15]),\n   [['bad-ref', 9]]),\n  ('nested package class name',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [17, 2]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [5]),\n   ['length1:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'java/lang/String'],\n     ['Class', 1],\n     ['Utf8', 'length1'],\n     ['Utf8', '()I'],\n     ['NameAndType', 3, 4],\n     ['Methodref', 2, 5],\n     ['Long', 1234567890124],\n     ['Integer', 41],\n     ['Double', 2.5],\n     ['String', 3],\n     ['Fieldref', 2, 5],\n     ['Methodref', 1, 5],\n     ['String', 9],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 16],\n     ['Integer', 7]],\n    [0]),\n   [['bad-ref', 0]])],\n [('regression: method reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [7]),\n   ['java.lang.String.length2:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [10, 9]),\n   [42, ['bad-ref', 9]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [13, 19]),\n   ['\"length2\"', 14]),\n  ('field reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [14]),\n   ['java.lang.String.length2:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [15]),\n   [['bad-ref', 2]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [16]),\n   [['bad-ref', 10]]),\n  ('nested package class name',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [18, 3]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [6]),\n   ['length2:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 2],\n     ['Utf8', 'length2'],\n     ['Utf8', '()I'],\n     ['NameAndType', 4, 5],\n     ['Methodref', 3, 6],\n     ['Long', 1234567890125],\n     ['Integer', 42],\n     ['Double', 5.0],\n     ['String', 4],\n     ['Fieldref', 3, 6],\n     ['Methodref', 2, 6],\n     ['String', 10],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 17],\n     ['Integer', 14]],\n    [0]),\n   [['bad-ref', 0]])],\n [('regression: method reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [8]),\n   ['java.lang.String.length3:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [11, 10]),\n   [43, ['bad-ref', 10]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [14, 20]),\n   ['\"length3\"', 21]),\n  ('field reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [15]),\n   ['java.lang.String.length3:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [16]),\n   [['bad-ref', 3]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [17]),\n   [['bad-ref', 11]]),\n  ('nested package class name',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [19, 4]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [7]),\n   ['length3:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 3],\n     ['Utf8', 'length3'],\n     ['Utf8', '()I'],\n     ['NameAndType', 5, 6],\n     ['Methodref', 4, 7],\n     ['Long', 1234567890126],\n     ['Integer', 43],\n     ['Double', 7.5],\n     ['String', 5],\n     ['Fieldref', 4, 7],\n     ['Methodref', 3, 7],\n     ['String', 11],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 18],\n     ['Integer', 21]],\n    [0]),\n   [['bad-ref', 0]])],\n [('regression: method reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [9]),\n   ['java.lang.String.length4:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [12, 11]),\n   [44, ['bad-ref', 11]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [15, 21]),\n   ['\"length4\"', 28]),\n  ('field reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [16]),\n   ['java.lang.String.length4:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [17]),\n   [['bad-ref', 4]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [18]),\n   [['bad-ref', 12]]),\n  ('nested package class name',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [20, 5]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [8]),\n   ['length4:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 4],\n     ['Utf8', 'length4'],\n     ['Utf8', '()I'],\n     ['NameAndType', 6, 7],\n     ['Methodref', 5, 8],\n     ['Long', 1234567890127],\n     ['Integer', 44],\n     ['Double', 10.0],\n     ['String', 6],\n     ['Fieldref', 5, 8],\n     ['Methodref', 4, 8],\n     ['String', 12],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 19],\n     ['Integer', 28]],\n    [0]),\n   [['bad-ref', 0]])],\n [('regression: method reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [10]),\n   ['java.lang.String.length5:()I']),\n  ('entries after a Long keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [13, 12]),\n   [45, ['bad-ref', 12]]),\n  ('entries after a Double keep their index',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [16, 22]),\n   ['\"length5\"', 35]),\n  ('field reference',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [17]),\n   ['java.lang.String.length5:()I']),\n  ('method reference with non-Class owner',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [18]),\n   [['bad-ref', 5]]),\n  ('string constant pointing at an Integer',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [19]),\n   [['bad-ref', 13]]),\n  ('nested package class name',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [21, 6]),\n   ['java.util.Map$Entry', 'java.lang.String']),\n  ('name and type',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [9]),\n   ['length5:()I']),\n  ('index zero is invalid',\n   ([['Utf8', 'pad0'],\n     ['Utf8', 'pad1'],\n     ['Utf8', 'pad2'],\n     ['Utf8', 'pad3'],\n     ['Utf8', 'java/lang/String'],\n     ['Class', 5],\n     ['Utf8', 'length5'],\n     ['Utf8', '()I'],\n     ['NameAndType', 7, 8],\n     ['Methodref', 6, 9],\n     ['Long', 1234567890128],\n     ['Integer', 45],\n     ['Double', 12.5],\n     ['String', 7],\n     ['Fieldref', 6, 9],\n     ['Methodref', 5, 9],\n     ['String', 13],\n     ['Utf8', 'java/util/Map$Entry'],\n     ['Class', 20],\n     ['Integer', 35]],\n    [0]),\n   [['bad-ref', 0]])]]\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 bytecode virtual machine mechanism with a stipulated instruction encoding; it is not a production VM and claims no conformance to any real specification. 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-bytecode-virtual-machines-constant-pool-resolution-two-slot-constants","generated_at":"2026-09-29T14:51:22.701394+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Class loaders and interpreters must resolve symbolic references against the exact pool layout.","repair":"Advance the index by two after Long and Double entries.","root_cause":"The index counter advances by one for every entry, ignoring two-slot constants.","sha256":"cc31ef60347d137d02a8f021f613bd463cfed061b1c99b9f2cb7aa9a99c4a4b4","title":"Constant pool: Long and Double occupy one slot · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.561,"exit_code":1,"observations":[{"actual":["java.lang.String.length1:()I"],"check":"regression: method reference","expected":["java.lang.String.length1:()I"],"passed":true},{"actual":[41,["bad-ref",8]],"check":"entries after a Long keep their index","expected":[41,["bad-ref",8]],"passed":true},{"actual":["java.lang.String.length1:()I",["bad-ref",18]],"check":"entries after a Double keep their index","expected":["\"length1\"",7],"passed":false},{"actual":[["bad-ref",1]],"check":"field reference","expected":["java.lang.String.length1:()I"],"passed":false},{"actual":[["bad-ref",9]],"check":"method reference with non-Class owner","expected":[["bad-ref",1]],"passed":false},{"actual":["java/util/Map$Entry"],"check":"string constant pointing at an Integer","expected":[["bad-ref",9]],"passed":false},{"actual":[7,"java.lang.String"],"check":"nested package class name","expected":["java.util.Map$Entry","java.lang.String"],"passed":false},{"actual":["length1:()I"],"check":"name and type","expected":["length1:()I"],"passed":true},{"actual":[["bad-ref",0]],"check":"index zero is invalid","expected":[["bad-ref",0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: method reference\", \"actual\": [\"java.lang.String.length1:()I\"], \"expected\": [\"java.lang.String.length1:()I\"], \"passed\": true}, {\"check\": \"entries after a Long keep their index\", \"actual\": [41, [\"bad-ref\", 8]], \"expected\": [41, [\"bad-ref\", 8]], \"passed\": true}, {\"check\": \"entries after a Double keep their index\", \"actual\": [\"java.lang.String.length1:()I\", [\"bad-ref\", 18]], \"expected\": [\"\\\"length1\\\"\", 7], \"passed\": false}, {\"check\": \"field reference\", \"actual\": [[\"bad-ref\", 1]], \"expected\": [\"java.lang.String.length1:()I\"], \"passed\": false}, {\"check\": \"method reference with non-Class owner\", \"actual\": [[\"bad-ref\", 9]], \"expected\": [[\"bad-ref\", 1]], \"passed\": false}, {\"check\": \"string constant pointing at an Integer\", \"actual\": [\"java/util/Map$Entry\"], \"expected\": [[\"bad-ref\", 9]], \"passed\": false}, {\"check\": \"nested package class name\", \"actual\": [7, \"java.lang.String\"], \"expected\": [\"java.util.Map$Entry\", \"java.lang.String\"], \"passed\": false}, {\"check\": \"name and type\", \"actual\": [\"length1:()I\"], \"expected\": [\"length1:()I\"], \"passed\": true}, {\"check\": \"index zero is invalid\", \"actual\": [[\"bad-ref\", 0]], \"expected\": [[\"bad-ref\", 0]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.148,"exit_code":1,"observations":[{"actual":["java.lang.String.length1:()I"],"check":"regression: method reference","expected":["java.lang.String.length1:()I"],"passed":true},{"actual":[2.5,41],"check":"entries after a Long keep their index","expected":[41,["bad-ref",8]],"passed":false},{"actual":[["bad-ref",1],["bad-ref",18]],"check":"entries after a Double keep their index","expected":["\"length1\"",7],"passed":false},{"actual":[["bad-ref",9]],"check":"field reference","expected":["java.lang.String.length1:()I"],"passed":false},{"actual":["java/util/Map$Entry"],"check":"method reference with non-Class owner","expected":[["bad-ref",1]],"passed":false},{"actual":[["bad-ref",16]],"check":"string constant pointing at an Integer","expected":[["bad-ref",9]],"passed":false},{"actual":[["bad-ref",17],"java.lang.String"],"check":"nested package class name","expected":["java.util.Map$Entry","java.lang.String"],"passed":false},{"actual":["length1:()I"],"check":"name and type","expected":["length1:()I"],"passed":true},{"actual":[["bad-ref",0]],"check":"index zero is invalid","expected":[["bad-ref",0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: method reference\", \"actual\": [\"java.lang.String.length1:()I\"], \"expected\": [\"java.lang.String.length1:()I\"], \"passed\": true}, {\"check\": \"entries after a Long keep their index\", \"actual\": [2.5, 41], \"expected\": [41, [\"bad-ref\", 8]], \"passed\": false}, {\"check\": \"entries after a Double keep their index\", \"actual\": [[\"bad-ref\", 1], [\"bad-ref\", 18]], \"expected\": [\"\\\"length1\\\"\", 7], \"passed\": false}, {\"check\": \"field reference\", \"actual\": [[\"bad-ref\", 9]], \"expected\": [\"java.lang.String.length1:()I\"], \"passed\": false}, {\"check\": \"method reference with non-Class owner\", \"actual\": [\"java/util/Map$Entry\"], \"expected\": [[\"bad-ref\", 1]], \"passed\": false}, {\"check\": \"string constant pointing at an Integer\", \"actual\": [[\"bad-ref\", 16]], \"expected\": [[\"bad-ref\", 9]], \"passed\": false}, {\"check\": \"nested package class name\", \"actual\": [[\"bad-ref\", 17], \"java.lang.String\"], \"expected\": [\"java.util.Map$Entry\", \"java.lang.String\"], \"passed\": false}, {\"check\": \"name and type\", \"actual\": [\"length1:()I\"], \"expected\": [\"length1:()I\"], \"passed\": true}, {\"check\": \"index zero is invalid\", \"actual\": [[\"bad-ref\", 0]], \"expected\": [[\"bad-ref\", 0]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.578,"exit_code":0,"observations":[{"actual":["java.lang.String.length1:()I"],"check":"regression: method reference","expected":["java.lang.String.length1:()I"],"passed":true},{"actual":[41,["bad-ref",8]],"check":"entries after a Long keep their index","expected":[41,["bad-ref",8]],"passed":true},{"actual":["\"length1\"",7],"check":"entries after a Double keep their index","expected":["\"length1\"",7],"passed":true},{"actual":["java.lang.String.length1:()I"],"check":"field reference","expected":["java.lang.String.length1:()I"],"passed":true},{"actual":[["bad-ref",1]],"check":"method reference with non-Class owner","expected":[["bad-ref",1]],"passed":true},{"actual":[["bad-ref",9]],"check":"string constant pointing at an Integer","expected":[["bad-ref",9]],"passed":true},{"actual":["java.util.Map$Entry","java.lang.String"],"check":"nested package class name","expected":["java.util.Map$Entry","java.lang.String"],"passed":true},{"actual":["length1:()I"],"check":"name and type","expected":["length1:()I"],"passed":true},{"actual":[["bad-ref",0]],"check":"index zero is invalid","expected":[["bad-ref",0]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: method reference\", \"actual\": [\"java.lang.String.length1:()I\"], \"expected\": [\"java.lang.String.length1:()I\"], \"passed\": true}, {\"check\": \"entries after a Long keep their index\", \"actual\": [41, [\"bad-ref\", 8]], \"expected\": [41, [\"bad-ref\", 8]], \"passed\": true}, {\"check\": \"entries after a Double keep their index\", \"actual\": [\"\\\"length1\\\"\", 7], \"expected\": [\"\\\"length1\\\"\", 7], \"passed\": true}, {\"check\": \"field reference\", \"actual\": [\"java.lang.String.length1:()I\"], \"expected\": [\"java.lang.String.length1:()I\"], \"passed\": true}, {\"check\": \"method reference with non-Class owner\", \"actual\": [[\"bad-ref\", 1]], \"expected\": [[\"bad-ref\", 1]], \"passed\": true}, {\"check\": \"string constant pointing at an Integer\", \"actual\": [[\"bad-ref\", 9]], \"expected\": [[\"bad-ref\", 9]], \"passed\": true}, {\"check\": \"nested package class name\", \"actual\": [\"java.util.Map$Entry\", \"java.lang.String\"], \"expected\": [\"java.util.Map$Entry\", \"java.lang.String\"], \"passed\": true}, {\"check\": \"name and type\", \"actual\": [\"length1:()I\"], \"expected\": [\"length1:()I\"], \"passed\": true}, {\"check\": \"index zero is invalid\", \"actual\": [[\"bad-ref\", 0]], \"expected\": [[\"bad-ref\", 0]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}