'use strict'; 
 | 
var lengthOfArrayLike = require('../internals/length-of-array-like'); 
 | 
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity'); 
 | 
  
 | 
var $RangeError = RangeError; 
 | 
  
 | 
// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with 
 | 
// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with 
 | 
module.exports = function (O, C, index, value) { 
 | 
  var len = lengthOfArrayLike(O); 
 | 
  var relativeIndex = toIntegerOrInfinity(index); 
 | 
  var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex; 
 | 
  if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index'); 
 | 
  var A = new C(len); 
 | 
  var k = 0; 
 | 
  for (; k < len; k++) A[k] = k === actualIndex ? value : O[k]; 
 | 
  return A; 
 | 
}; 
 |