docs: private void storeInstanceField(XField instanceField, Instruction obj, boolean pushStoredValue) {
          if (RLE_DEBUG) {
              System.out.println("[storeInstanceField for field " + instanceField + " in instruction " + handle);
          }
  
          ValueNumberFrame frame = getFrame();
  
          int numWordsConsumed = getNumWordsConsumed(obj);
          /*
           * System.out.println("Instruction is " + handle);
           * System.out.println("numWordsConsumed="+numWordsConsumed);
           */
          ValueNumber[] inputValueList = popInputValues(numWordsConsumed);
          ValueNumber reference = inputValueList[0];
          ValueNumber[] storedValue = allocateValueNumberArray(inputValueList.length - 1);
          System.arraycopy(inputValueList, 1, storedValue, 0, inputValueList.length - 1);
  
          if (pushStoredValue) {
              pushOutputValues(storedValue);
          }
  
          // Kill all previous loads of the same field,
          // in case there is aliasing we don't know about
          frame.killLoadsOfField(instanceField);
  
          // Forward substitution
          frame.addAvailableLoad(new AvailableLoad(reference, instanceField), storedValue);
  
          if (RLE_DEBUG) {
              System.out.println("[making store of " + instanceField + " available]");
          }
  
          if (VERIFY_INTEGRITY) {
              /*
               * System.out.println("pushStoredValue="+pushStoredValue);
               */
              checkConsumedAndProducedValues(obj, inputValueList, pushStoredValue ? storedValue : EMPTY_INPUT_VALUE_LIST);
          }
      }