private void visitCommon(int offset, int length, boolean nextIsLive) {
    Bits.set(liveSet, offset);

    if (nextIsLive) {
      /*
       * If the next instruction is flowed to by this one, just
       * add it to the work set, and then a subsequent visit*()
       * will deal with it as appropriate.
       */
      addWorkIfNecessary(offset + length, false);
    } else {
      /*
       * If the next instruction isn't flowed to by this one,
       * then mark it as a start of a block but *don't* add it
       * to the work set, so that in the final phase we can know
       * dead code blocks as those marked as blocks but not also marked
       * live.
       */
      Bits.set(blockSet, offset + length);
    }
  }
Helper method used by all the visitor methods.

@param offset offset to the instruction
@param length length of the instruction, in bytes
@param nextIsLive {@code true} iff the instruction after the indicated one is possibly-live
    (because this one isn't an unconditional branch, a return, or a switch)
android/android_framework/dex-maker/src/main/java/com/android/dx/cf/code/BasicBlocker.java