public void process() {
      /*
       * From Appel:
       *
       * Rename(n) =
       *   for each statement S in block n   // 'statement' in 'block'
       */

      block.forEachInsn(this);

      updateSuccessorPhis();

      // Delete all move insns in this block.
      ArrayList<SsaInsn> insns = block.getInsns();
      int szInsns = insns.size();

      for (int i = szInsns - 1; i >= 0; i--) {
        SsaInsn insn = insns.get(i);
        SsaInsn replaceInsn;

        replaceInsn = insnsToReplace.get(insn);

        if (replaceInsn != null) {
          insns.set(i, replaceInsn);
        } else if (insn.isNormalMoveInsn() && !movesToKeep.contains(insn)) {
          insns.remove(i);
        }
      }

      // Store the start states for our dom children.
      boolean first = true;
      for (SsaBasicBlock child : block.getDomChildren()) {
        if (child != block) {
          // Don't bother duplicating the array for the first child.
          RegisterSpec[] childStart = first ? currentMapping : dupArray(currentMapping);

          startsForBlocks[child.getIndex()] = childStart;
          first = false;
        }
      }

      // currentMapping is owned by a child now.
    }
Renames all the variables in this block and inserts appriopriate phis in successor blocks.
android/android_framework/dex-maker/src/main/java/com/android/dx/ssa/SsaRenamer.java