code: final void setInputFrameFromApiFormat(
        final SymbolTable symbolTable,
        final int nLocal,
        final Object[] local,
        final int nStack,
        final Object[] stack) {
      int inputLocalIndex = 0;
      for (int i = 0; i < nLocal; ++i) {
        inputLocals[inputLocalIndex++] = getAbstractTypeFromApiFormat(symbolTable, local[i]);
        if (local[i] == Opcodes.LONG || local[i] == Opcodes.DOUBLE) {
          inputLocals[inputLocalIndex++] = TOP;
        }
      }
      while (inputLocalIndex < inputLocals.length) {
        inputLocals[inputLocalIndex++] = TOP;
      }
      int nStackTop = 0;
      for (int i = 0; i < nStack; ++i) {
        if (stack[i] == Opcodes.LONG || stack[i] == Opcodes.DOUBLE) {
          ++nStackTop;
        }
      }
      inputStack = new int[nStack + nStackTop];
      int inputStackIndex = 0;
      for (int i = 0; i < nStack; ++i) {
        inputStack[inputStackIndex++] = getAbstractTypeFromApiFormat(symbolTable, stack[i]);
        if (stack[i] == Opcodes.LONG || stack[i] == Opcodes.DOUBLE) {
          inputStack[inputStackIndex++] = TOP;
        }
      }
      outputStackTop = 0;
      initializationCount = 0;
    }
docs: Sets the input frame from the given public API frame description.
  
  @param symbolTable the type table to use to lookup and store type {@link Symbol}.
  @param nLocal the number of local variables.
  @param local the local variable types, described using the same format as in {@link
  MethodVisitor#visitFrame}.
  @param nStack the number of operand stack elements.
  @param stack the operand stack types, described using the same format as in {@link
  MethodVisitor#visitFrame}.