code: function pureFunctionV(slotOffset, pureFn, exps, thisArg) {
      ngDevMode && assertReservedSlotInitialized(slotOffset, exps.length + 1);
      var index = moveBindingIndexToReservedSlot(slotOffset);
      var different = false;
      for (var i = 0; i < exps.length; i++) {
          bindingUpdated(exps[i]) && (different = true);
      }
      var value = different ? checkAndUpdateBinding$1(pureFn.apply(thisArg, exps)) : consumeBinding();
      restoreBindingIndex(index);
      return value;
  }
docs: pureFunction instruction that can support any number of bindings.
  
  If the value of any provided exp has changed, calls the pure function to return
  an updated value. Or if no values have changed, returns cached value.
  
  @param slotOffset the offset in the reserved slot space {@link reserveSlots}
  @param pureFn A pure function that takes binding values and builds an object or array
  containing those values.
  @param exps An array of binding values
  @param thisArg Optional calling context of pureFn
  @returns Updated or cached value