final byte[] methodIndexTable = new byte[count]; this.methodTable = (VmMethod[]) methods.toArray(new VmMethod[ methods .size()]);
final byte[] methodIndexTable = (methodCount > 1) ? new byte[count] : null; final byte[] inlineDepthTable = (maxInlineDepth == 0) ? null : new byte[count]; this.methodTable = (VmMethod[]) methods.toArray(new VmMethod[methodCount]);
    final void lock() {        AddressPcEntry p = list;        int count = 0;        final ArrayList<VmMethod> methods = new ArrayList<VmMethod>();        while (p != null) {            count++;            final VmMethod m = p.method;            if (!methods.contains(m)) {                methods.add(m);            }            p = p.next;        }        final int[] offsetTable = new int[ count];        final char[] pcTable = new char[count];        final byte[] methodIndexTable = new byte[count];        this.methodTable = (VmMethod[]) methods.toArray(new VmMethod[ methods                                                                      .size()]);        p = list;        int i = 0;        int lastOffset = -1;        while (p != null) {            methodIndexTable[i] = (byte)methods.indexOf(p.method);            pcTable[i] = p.pc;            offsetTable[i] = p.offset;            if (p.offset < lastOffset) { throw new InternalError(                    "unordered offset found"); }            lastOffset = p.offset;            i++;            p = p.next;        }        this.offsetTable = offsetTable;        this.pcTable = pcTable;        this.methodIndexTable = methodIndexTable;        this.list = null;    }