FAILURE MAP
← Case archive

FA-90031 / Bytecode virtual machines / Open access

Constant pool: NameAndType renders descriptor before name · case 01

Member references print as "()I:length".

Verified by executionVariant 1 · 9 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The two NameAndType indexes are read in the wrong order.

VERIFIED REPAIR

The first index is the name, the second the descriptor.

Unsuccessful approach: Concatenating without the separator yields "length()I", which cannot be split back.

Case 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].

Why this case matters

Class loaders and interpreters must resolve symbolic references against the exact pool layout.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(pool, queries):
    table = {}
    idx = 1
    for e in pool:
        table[idx] = e
        idx += 2 if e[0] in ('Long', 'Double') else 1
    def utf(i):
        e = table.get(i)
        if e is None or e[0] != 'Utf8':
            raise LookupError(i)
        return e[1]
    def res(i):
        e = table.get(i)
        if e is None:
            raise LookupError(i)
        kind = e[0]
        if kind == 'Utf8':
            return e[1]
        if kind in ('Integer', 'Long', 'Double'):
            return e[1]
        if kind == 'String':
            return '"' + utf(e[1]) + '"'
        if kind == 'Class':
            return utf(e[1]).replace('/', '.')
        if kind == 'NameAndType':
            return utf(e[2]) + ':' + utf(e[1])
        if kind in ('Methodref', 'Fieldref'):
            c = table.get(e[1])
            if c is None or c[0] != 'Class':
                raise LookupError(e[1])
            n = table.get(e[2])
            if n is None or n[0] != 'NameAndType':
                raise LookupError(e[2])
            return res(e[1]) + '.' + res(e[2])
        raise LookupError(i)
    out = []
    for q in queries:
        try:
            out.append(res(q))
        except LookupError as err:
            out.append(['bad-ref', err.args[0]])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression: method reference',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [6]),
   ['java.lang.String.length1:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [9, 8]),
   [41, ['bad-ref', 8]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [12, 18]),
   ['"length1"', 7]),
  ('field reference',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [13]),
   ['java.lang.String.length1:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [14]),
   [['bad-ref', 1]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [15]),
   [['bad-ref', 9]]),
  ('nested package class name',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [17, 2]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [5]),
   ['length1:()I']),
  ('index zero is invalid',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [0]),
   [['bad-ref', 0]])],
 [('regression: method reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [7]),
   ['java.lang.String.length2:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [10, 9]),
   [42, ['bad-ref', 9]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [13, 19]),
   ['"length2"', 14]),
  ('field reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [14]),
   ['java.lang.String.length2:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [15]),
   [['bad-ref', 2]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [16]),
   [['bad-ref', 10]]),
  ('nested package class name',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [18, 3]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [6]),
   ['length2:()I']),
  ('index zero is invalid',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [0]),
   [['bad-ref', 0]])],
 [('regression: method reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [8]),
   ['java.lang.String.length3:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [11, 10]),
   [43, ['bad-ref', 10]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [14, 20]),
   ['"length3"', 21]),
  ('field reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [15]),
   ['java.lang.String.length3:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [16]),
   [['bad-ref', 3]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [17]),
   [['bad-ref', 11]]),
  ('nested package class name',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [19, 4]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [7]),
   ['length3:()I']),
  ('index zero is invalid',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [0]),
   [['bad-ref', 0]])],
 [('regression: method reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [9]),
   ['java.lang.String.length4:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [12, 11]),
   [44, ['bad-ref', 11]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [15, 21]),
   ['"length4"', 28]),
  ('field reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [16]),
   ['java.lang.String.length4:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [17]),
   [['bad-ref', 4]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [18]),
   [['bad-ref', 12]]),
  ('nested package class name',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [20, 5]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [8]),
   ['length4:()I']),
  ('index zero is invalid',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [0]),
   [['bad-ref', 0]])],
 [('regression: method reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [10]),
   ['java.lang.String.length5:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [13, 12]),
   [45, ['bad-ref', 12]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [16, 22]),
   ['"length5"', 35]),
  ('field reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [17]),
   ['java.lang.String.length5:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [18]),
   [['bad-ref', 5]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [19]),
   [['bad-ref', 13]]),
  ('nested package class name',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [21, 6]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [9]),
   ['length5:()I']),
  ('index zero is invalid',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [0]),
   [['bad-ref', 0]])]]
for label, args, expected in cases[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: method reference['java.lang.String.()I:length1']['java.lang.String.length1:()I']Failed
entries after a Long keep their index[41, ['bad-ref', 8]][41, ['bad-ref', 8]]Passed
entries after a Double keep their index['"length1"', 7]['"length1"', 7]Passed
field reference['java.lang.String.()I:length1']['java.lang.String.length1:()I']Failed
method reference with non-Class owner[['bad-ref', 1]][['bad-ref', 1]]Passed
string constant pointing at an Integer[['bad-ref', 9]][['bad-ref', 9]]Passed
nested package class name['java.util.Map$Entry', 'java.lang.String']['java.util.Map$Entry', 'java.lang.String']Passed
name and type['()I:length1']['length1:()I']Failed
index zero is invalid[['bad-ref', 0]][['bad-ref', 0]]Passed

SHA-256 / 852c7b612860942106f0c6a4970db2be90108b72851043ba6e4213c0d9a74c71

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(pool, queries):
    table = {}
    idx = 1
    for e in pool:
        table[idx] = e
        idx += 2 if e[0] in ('Long', 'Double') else 1
    def utf(i):
        e = table.get(i)
        if e is None or e[0] != 'Utf8':
            raise LookupError(i)
        return e[1]
    def res(i):
        e = table.get(i)
        if e is None:
            raise LookupError(i)
        kind = e[0]
        if kind == 'Utf8':
            return e[1]
        if kind in ('Integer', 'Long', 'Double'):
            return e[1]
        if kind == 'String':
            return '"' + utf(e[1]) + '"'
        if kind == 'Class':
            return utf(e[1]).replace('/', '.')
        if kind == 'NameAndType':
            return utf(e[1]) + utf(e[2])
        if kind in ('Methodref', 'Fieldref'):
            c = table.get(e[1])
            if c is None or c[0] != 'Class':
                raise LookupError(e[1])
            n = table.get(e[2])
            if n is None or n[0] != 'NameAndType':
                raise LookupError(e[2])
            return res(e[1]) + '.' + res(e[2])
        raise LookupError(i)
    out = []
    for q in queries:
        try:
            out.append(res(q))
        except LookupError as err:
            out.append(['bad-ref', err.args[0]])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression: method reference',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [6]),
   ['java.lang.String.length1:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [9, 8]),
   [41, ['bad-ref', 8]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [12, 18]),
   ['"length1"', 7]),
  ('field reference',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [13]),
   ['java.lang.String.length1:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [14]),
   [['bad-ref', 1]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [15]),
   [['bad-ref', 9]]),
  ('nested package class name',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [17, 2]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [5]),
   ['length1:()I']),
  ('index zero is invalid',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [0]),
   [['bad-ref', 0]])],
 [('regression: method reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [7]),
   ['java.lang.String.length2:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [10, 9]),
   [42, ['bad-ref', 9]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [13, 19]),
   ['"length2"', 14]),
  ('field reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [14]),
   ['java.lang.String.length2:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [15]),
   [['bad-ref', 2]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [16]),
   [['bad-ref', 10]]),
  ('nested package class name',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [18, 3]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [6]),
   ['length2:()I']),
  ('index zero is invalid',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [0]),
   [['bad-ref', 0]])],
 [('regression: method reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [8]),
   ['java.lang.String.length3:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [11, 10]),
   [43, ['bad-ref', 10]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [14, 20]),
   ['"length3"', 21]),
  ('field reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [15]),
   ['java.lang.String.length3:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [16]),
   [['bad-ref', 3]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [17]),
   [['bad-ref', 11]]),
  ('nested package class name',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [19, 4]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [7]),
   ['length3:()I']),
  ('index zero is invalid',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [0]),
   [['bad-ref', 0]])],
 [('regression: method reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [9]),
   ['java.lang.String.length4:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [12, 11]),
   [44, ['bad-ref', 11]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [15, 21]),
   ['"length4"', 28]),
  ('field reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [16]),
   ['java.lang.String.length4:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [17]),
   [['bad-ref', 4]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [18]),
   [['bad-ref', 12]]),
  ('nested package class name',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [20, 5]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [8]),
   ['length4:()I']),
  ('index zero is invalid',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [0]),
   [['bad-ref', 0]])],
 [('regression: method reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [10]),
   ['java.lang.String.length5:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [13, 12]),
   [45, ['bad-ref', 12]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [16, 22]),
   ['"length5"', 35]),
  ('field reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [17]),
   ['java.lang.String.length5:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [18]),
   [['bad-ref', 5]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [19]),
   [['bad-ref', 13]]),
  ('nested package class name',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [21, 6]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [9]),
   ['length5:()I']),
  ('index zero is invalid',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [0]),
   [['bad-ref', 0]])]]
for label, args, expected in cases[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: method reference['java.lang.String.length1()I']['java.lang.String.length1:()I']Failed
entries after a Long keep their index[41, ['bad-ref', 8]][41, ['bad-ref', 8]]Passed
entries after a Double keep their index['"length1"', 7]['"length1"', 7]Passed
field reference['java.lang.String.length1()I']['java.lang.String.length1:()I']Failed
method reference with non-Class owner[['bad-ref', 1]][['bad-ref', 1]]Passed
string constant pointing at an Integer[['bad-ref', 9]][['bad-ref', 9]]Passed
nested package class name['java.util.Map$Entry', 'java.lang.String']['java.util.Map$Entry', 'java.lang.String']Passed
name and type['length1()I']['length1:()I']Failed
index zero is invalid[['bad-ref', 0]][['bad-ref', 0]]Passed

SHA-256 / 8d1b8a0c1c4b5a9cabbfe25a2aa57dfc7445fcf22582a14af386cd0951f81472

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(pool, queries):
    table = {}
    idx = 1
    for e in pool:
        table[idx] = e
        idx += 2 if e[0] in ('Long', 'Double') else 1
    def utf(i):
        e = table.get(i)
        if e is None or e[0] != 'Utf8':
            raise LookupError(i)
        return e[1]
    def res(i):
        e = table.get(i)
        if e is None:
            raise LookupError(i)
        kind = e[0]
        if kind == 'Utf8':
            return e[1]
        if kind in ('Integer', 'Long', 'Double'):
            return e[1]
        if kind == 'String':
            return '"' + utf(e[1]) + '"'
        if kind == 'Class':
            return utf(e[1]).replace('/', '.')
        if kind == 'NameAndType':
            return utf(e[1]) + ':' + utf(e[2])
        if kind in ('Methodref', 'Fieldref'):
            c = table.get(e[1])
            if c is None or c[0] != 'Class':
                raise LookupError(e[1])
            n = table.get(e[2])
            if n is None or n[0] != 'NameAndType':
                raise LookupError(e[2])
            return res(e[1]) + '.' + res(e[2])
        raise LookupError(i)
    out = []
    for q in queries:
        try:
            out.append(res(q))
        except LookupError as err:
            out.append(['bad-ref', err.args[0]])
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('regression: method reference',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [6]),
   ['java.lang.String.length1:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [9, 8]),
   [41, ['bad-ref', 8]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [12, 18]),
   ['"length1"', 7]),
  ('field reference',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [13]),
   ['java.lang.String.length1:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [14]),
   [['bad-ref', 1]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [15]),
   [['bad-ref', 9]]),
  ('nested package class name',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [17, 2]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [5]),
   ['length1:()I']),
  ('index zero is invalid',
   ([['Utf8', 'java/lang/String'],
     ['Class', 1],
     ['Utf8', 'length1'],
     ['Utf8', '()I'],
     ['NameAndType', 3, 4],
     ['Methodref', 2, 5],
     ['Long', 1234567890124],
     ['Integer', 41],
     ['Double', 2.5],
     ['String', 3],
     ['Fieldref', 2, 5],
     ['Methodref', 1, 5],
     ['String', 9],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 16],
     ['Integer', 7]],
    [0]),
   [['bad-ref', 0]])],
 [('regression: method reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [7]),
   ['java.lang.String.length2:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [10, 9]),
   [42, ['bad-ref', 9]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [13, 19]),
   ['"length2"', 14]),
  ('field reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [14]),
   ['java.lang.String.length2:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [15]),
   [['bad-ref', 2]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [16]),
   [['bad-ref', 10]]),
  ('nested package class name',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [18, 3]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [6]),
   ['length2:()I']),
  ('index zero is invalid',
   ([['Utf8', 'pad0'],
     ['Utf8', 'java/lang/String'],
     ['Class', 2],
     ['Utf8', 'length2'],
     ['Utf8', '()I'],
     ['NameAndType', 4, 5],
     ['Methodref', 3, 6],
     ['Long', 1234567890125],
     ['Integer', 42],
     ['Double', 5.0],
     ['String', 4],
     ['Fieldref', 3, 6],
     ['Methodref', 2, 6],
     ['String', 10],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 17],
     ['Integer', 14]],
    [0]),
   [['bad-ref', 0]])],
 [('regression: method reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [8]),
   ['java.lang.String.length3:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [11, 10]),
   [43, ['bad-ref', 10]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [14, 20]),
   ['"length3"', 21]),
  ('field reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [15]),
   ['java.lang.String.length3:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [16]),
   [['bad-ref', 3]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [17]),
   [['bad-ref', 11]]),
  ('nested package class name',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [19, 4]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [7]),
   ['length3:()I']),
  ('index zero is invalid',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'java/lang/String'],
     ['Class', 3],
     ['Utf8', 'length3'],
     ['Utf8', '()I'],
     ['NameAndType', 5, 6],
     ['Methodref', 4, 7],
     ['Long', 1234567890126],
     ['Integer', 43],
     ['Double', 7.5],
     ['String', 5],
     ['Fieldref', 4, 7],
     ['Methodref', 3, 7],
     ['String', 11],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 18],
     ['Integer', 21]],
    [0]),
   [['bad-ref', 0]])],
 [('regression: method reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [9]),
   ['java.lang.String.length4:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [12, 11]),
   [44, ['bad-ref', 11]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [15, 21]),
   ['"length4"', 28]),
  ('field reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [16]),
   ['java.lang.String.length4:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [17]),
   [['bad-ref', 4]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [18]),
   [['bad-ref', 12]]),
  ('nested package class name',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [20, 5]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [8]),
   ['length4:()I']),
  ('index zero is invalid',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'java/lang/String'],
     ['Class', 4],
     ['Utf8', 'length4'],
     ['Utf8', '()I'],
     ['NameAndType', 6, 7],
     ['Methodref', 5, 8],
     ['Long', 1234567890127],
     ['Integer', 44],
     ['Double', 10.0],
     ['String', 6],
     ['Fieldref', 5, 8],
     ['Methodref', 4, 8],
     ['String', 12],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 19],
     ['Integer', 28]],
    [0]),
   [['bad-ref', 0]])],
 [('regression: method reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [10]),
   ['java.lang.String.length5:()I']),
  ('entries after a Long keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [13, 12]),
   [45, ['bad-ref', 12]]),
  ('entries after a Double keep their index',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [16, 22]),
   ['"length5"', 35]),
  ('field reference',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [17]),
   ['java.lang.String.length5:()I']),
  ('method reference with non-Class owner',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [18]),
   [['bad-ref', 5]]),
  ('string constant pointing at an Integer',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [19]),
   [['bad-ref', 13]]),
  ('nested package class name',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [21, 6]),
   ['java.util.Map$Entry', 'java.lang.String']),
  ('name and type',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [9]),
   ['length5:()I']),
  ('index zero is invalid',
   ([['Utf8', 'pad0'],
     ['Utf8', 'pad1'],
     ['Utf8', 'pad2'],
     ['Utf8', 'pad3'],
     ['Utf8', 'java/lang/String'],
     ['Class', 5],
     ['Utf8', 'length5'],
     ['Utf8', '()I'],
     ['NameAndType', 7, 8],
     ['Methodref', 6, 9],
     ['Long', 1234567890128],
     ['Integer', 45],
     ['Double', 12.5],
     ['String', 7],
     ['Fieldref', 6, 9],
     ['Methodref', 5, 9],
     ['String', 13],
     ['Utf8', 'java/util/Map$Entry'],
     ['Class', 20],
     ['Integer', 35]],
    [0]),
   [['bad-ref', 0]])]]
for label, args, expected in cases[N - 1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: method reference['java.lang.String.length1:()I']['java.lang.String.length1:()I']Passed
entries after a Long keep their index[41, ['bad-ref', 8]][41, ['bad-ref', 8]]Passed
entries after a Double keep their index['"length1"', 7]['"length1"', 7]Passed
field reference['java.lang.String.length1:()I']['java.lang.String.length1:()I']Passed
method reference with non-Class owner[['bad-ref', 1]][['bad-ref', 1]]Passed
string constant pointing at an Integer[['bad-ref', 9]][['bad-ref', 9]]Passed
nested package class name['java.util.Map$Entry', 'java.lang.String']['java.util.Map$Entry', 'java.lang.String']Passed
name and type['length1:()I']['length1:()I']Passed
index zero is invalid[['bad-ref', 0]][['bad-ref', 0]]Passed

SHA-256 / d020ccfc84b79f79d10e7fa7ac224ca36488f004d53b7f17892c874fe55d3a19

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:51:22.926251+00:00.

Case digest / 9ac088aa1a5f0818f00d4b0350a41e5c7f611f23d730c4b20a5c5e7aa87da396