if (p.offset < lastOffset) { throw new VirtualMachineError(
if (p.offset < lastOffset) { throw new InternalError(
    final void lock() {        AddressPcEntry p = list;        int count = 0;        final ArrayList methods = new ArrayList();        while (p != null) {            count++;            final VmMethod m = p.method;            if (!methods.contains(m)) {                methods.add(m);            }            p = p.next;        }        final int[] table = new int[ count * 3];        this.methodTable = (VmMethod[]) methods.toArray(new VmMethod[ methods                                                                      .size()]);        p = list;        int i = 0;        int lastOffset = -1;        while (p != null) {            table[ i + 0] = methods.indexOf(p.method);            table[ i + 1] = p.pc;            table[ i + 2] = p.offset;            if (p.offset < lastOffset) { throw new VirtualMachineError(                    "unordered offset found"); }            lastOffset = p.offset;            i += 3;            p = p.next;        }        this.table = table;        this.list = null;    }