docs: @Override
      public void modelNormalInstruction(Instruction ins, int numWordsConsumed, int numWordsProduced) {
  
          int flags = 0;
          if (ins instanceof InvokeInstruction) {
              flags = ValueNumber.RETURN_VALUE;
          } else if (ins instanceof ArrayInstruction) {
              flags = ValueNumber.ARRAY_VALUE;
          } else if (ins instanceof ConstantPushInstruction) {
              flags = ValueNumber.CONSTANT_VALUE;
          }
  
          // Get the input operands to this instruction.
          ValueNumber[] inputValueList = popInputValues(numWordsConsumed);
  
          // See if we have the output operands in the cache.
          // If not, push default (fresh) values for the output,
          // and add them to the cache.
          ValueNumber[] outputValueList = getOutputValues(inputValueList, numWordsProduced, flags);
  
          if (VERIFY_INTEGRITY) {
              checkConsumedAndProducedValues(ins, inputValueList, outputValueList);
          }
  
          // Push output operands on stack.
          pushOutputValues(outputValueList);
      }