public DalvInsnList finishProcessingAndGetList() {
    if (reservedCount >= 0) {
      throw new UnsupportedOperationException("already processed");
    }

    Dop[] opcodes = makeOpcodesArray();
    reserveRegisters(opcodes);
    if (dexOptions.ALIGN_64BIT_REGS_IN_OUTPUT_FINISHER) {
      align64bits(opcodes);
    }
    massageInstructions(opcodes);
    assignAddressesAndFixBranches();

    return DalvInsnList.makeImmutable(
        insns, reservedCount + unreservedRegCount + reservedParameterCount);
  }
Does final processing on this instance and gets the output as a {@link DalvInsnList}. Final
processing consists of:

<ul>
  <li>optionally renumbering registers (to make room as needed for expanded instructions)
  <li>picking a final opcode for each instruction
  <li>rewriting instructions, because of register number, constant pool index, or branch target
      size issues
  <li>assigning final addresses
</ul>

<p><b>Note:</b> This method may only be called once per instance of this class.

@return {@code non-null;} the output list
@throws UnsupportedOperationException if this method has already been called
android/android_framework/dex-maker/src/main/java/com/android/dx/dex/code/OutputFinisher.java