function push( collection ) {
	var items;
	var i;
	items = [];
	for ( i = 0; i < arguments.length-1; i++ ) {
		items.push( arguments[ i+1 ] );
	}
	if ( isArray( collection ) ) {
		return pushArray( collection, items );
	}
	// Check for a typed-array-like object, as verifying actual typed arrays is expensive...
	if ( isTypedArrayLike( collection ) ) {
		return pushTypedArray( collection, items );
	}
	// Check for an array-like object...
	if (
		collection !== null &&
		typeof collection === 'object' &&
		typeof collection.length === 'number' &&
		isInteger( collection.length ) &&
		collection.length >= 0
	) {
		return pushObject( collection, items );
	}
	throw new TypeError( format( 'invalid argument. First argument must be either an array, typed array, or an array-like object. Value: `%s`.', collection ) );
}
Adds one or more elements to the end of a collection.

@param {(Array|TypedArray|Object)} collection - collection
@param {...*} items - items to add
@throws {TypeError} must provide either an array, typed array, or an array-like object
@returns {(Array|TypedArray|Object)} updated collection

@example
var arr = [ 1.0, 2.0, 3.0, 4.0, 5.0 ];

arr = push( arr, 6.0, 7.0 );
// returns [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]

@example
var Float64Array = require( '@stdlib/array/float64' );

var arr = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0 ] );
// returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0, 5.0 ]

arr = push( arr, 6.0, 7.0 );
// returns <Float64Array>[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 ]