private Code readCode() {
      int registersSize = readUnsignedShort();
      int insSize = readUnsignedShort();
      int outsSize = readUnsignedShort();
      int triesSize = readUnsignedShort();
      int debugInfoOffset = readInt();
      int instructionsSize = readInt();
      short[] instructions = readShortArray(instructionsSize);
      Try[] tries;
      CatchHandler[] catchHandlers;
      if (triesSize > 0) {
        if (instructions.length % 2 == 1) {
          readShort(); // padding
        }

        /*
         * We can't read the tries until we've read the catch handlers.
         * Unfortunately they're in the opposite order in the dex file
         * so we need to read them out-of-order.
         */
        Section triesSection = open(data.position());
        skip(triesSize * SizeOf.TRY_ITEM);
        catchHandlers = readCatchHandlers();
        tries = triesSection.readTries(triesSize, catchHandlers);
      } else {
        tries = new Try[0];
        catchHandlers = new CatchHandler[0];
      }
      return new Code(
          registersSize, insSize, outsSize, debugInfoOffset, instructions, tries, catchHandlers);
    }
Look up a descriptor index from a type index. Cheaper than: {@code
open(tableOfContents.typeIds.off + (index * SizeOf.TYPE_ID_ITEM)).readInt();}
android/android_framework/dex-maker/src/main/java/com/android/dex/Dex.java