code: final void set(ClassWriter cw, final int nLocal, final Object[] local,
              final int nStack, final Object[] stack) {
          int i = convert(cw, nLocal, local, inputLocals);
          while (i < local.length) {
              inputLocals[i++] = TOP;
          }
          int nStackTop = 0;
          for (int j = 0; j < nStack; ++j) {
              if (stack[j] == Opcodes.LONG || stack[j] == Opcodes.DOUBLE) {
                  ++nStackTop;
              }
          }
          inputStack = new int[nStack + nStackTop];
          convert(cw, nStack, stack, inputStack);
          outputStackTop = 0;
          initializationCount = 0;
      }
docs: Sets this frame to the given value.
  
  @param cw
  the ClassWriter to which this label belongs.
  @param nLocal
  the number of local variables.
  @param local
  the local variable types. Primitive types are represented by
  {@link Opcodes#TOP}, {@link Opcodes#INTEGER},
  {@link Opcodes#FLOAT}, {@link Opcodes#LONG},
  {@link Opcodes#DOUBLE},{@link Opcodes#NULL} or
  {@link Opcodes#UNINITIALIZED_THIS} (long and double are
  represented by a single element). Reference types are
  represented by String objects (representing internal names),
  and uninitialized types by Label objects (this label
  designates the NEW instruction that created this uninitialized
  value).
  @param nStack
  the number of operand stack elements.
  @param stack
  the operand stack types (same format as the "local" array).