IMT[extSlot] = (VM_CodeArray) tib[target.getOffsetAsInt()>>LOG_BYTES_IN_ADDRESS];
IMT[extSlot] = (VM_CodeArray) tib[target.getOffset().toInt()>>LOG_BYTES_IN_ADDRESS];
    public void populateIMT(Object[] tib, Object[] IMT) {      int adjust = VM.BuildForEmbeddedIMT ? TIB_FIRST_INTERFACE_METHOD_INDEX : 0;      for (int slot = 0; slot<links.length; slot++) {        int extSlot = slot + adjust;        int count = populationCount(slot);        if (count == 0) {          VM_Entrypoints.raiseAbstractMethodError.compile();          IMT[extSlot] = VM_Entrypoints.raiseAbstractMethodError.getCurrentInstructions();        } else if (count == 1) {          VM_Method target = getSoleTarget(slot);          if (target.isStatic()) {            target.compile();            IMT[extSlot] = target.getCurrentInstructions();          } else {            IMT[extSlot] = (VM_CodeArray) tib[target.getOffsetAsInt()>>LOG_BYTES_IN_ADDRESS];            if (klass.noIMTConflictMap == null) {              klass.noIMTConflictMap = new VM_Method[IMT_METHOD_SLOTS];            }            klass.noIMTConflictMap[slot] = target;          }        } else {          VM_Method[] targets = new VM_Method[count];          int[] sigIds = new int[count];          int idx = 0;          for (Link p = links[slot]; p != null; idx++, p = p.next) {            targets[idx] = p.method;            sigIds[idx] = p.signature.getId();          }          IMT[extSlot] = VM_InterfaceMethodConflictResolver.createStub(sigIds, targets);        }      }    }