+ let itemsRemoved: T[];
+ if (arguments.length >= 3 && typeof deleteCount !== 'undefined') {
+ itemsRemoved = super.splice(start, deleteCount);
+ // FIXME: that makes the items insert not in place
+ this.push(...items);
+ } else if (arguments.length === 2) {
+ itemsRemoved = super.splice(start, deleteCount);
+ } else {
+ itemsRemoved = super.splice(start);
+ }
+ return itemsRemoved;