public static Inspector inspect(byte[] data) {
        var input = new BufferedInput(data);
        var names = new SymbolTable();
        BinaryDecoder.decodeSymbolTable(input, names);
        var index = new DecodeIndex(input.getBacking().length, input.getPosition());
        buildIndex(input, index, 0, 0);
        if (input.failed()) {
            throw new IllegalArgumentException("bad input: " + input.getErrorMessage());
        }
        return new BinaryView(input.getBacking(), names, index.getBacking(), 0);
    }
@Test public void testBinaryViewShapesParity() {
        for (int i = 0; i < numShapes; ++i) {
            var slime = makeSlime(i);
            ctx = "case " + i + ": '" + slime.toString() + "'";
            byte[] data = BinaryFormat.encode(slime);
            try {
                checkParity(slime.get(), BinaryView.inspect(data));
            } catch (Exception e) {
                fail(ctx + ", got exception: " + e);
            }
        }
    }