function mskfiltern() {
	var getters;
	var arrays;
	var nargs;
	var mget;
	var mask;
	var out;
	var i;
	var j;

	nargs = arguments.length;
	nargs -= 1;

	// Resolve the mask array and its associated accessor:
	mask = arguments[ nargs ];
	mget = resolveGetter( mask );

	// Resolve accessors for retrieving array elements and initialize the output arrays...
	getters = [];
	arrays = [];
	out = [];
	for ( i = 0; i < nargs; i++ ) {
		arrays.push( arguments[ i ] );
		getters.push( resolveGetter( arrays[ i ] ) );
		out.push( [] );
	}
	// Extract each desired element from the provided arrays...
	for ( i = 0; i < mask.length; i++ ) {
		if ( mget( mask, i ) ) {
			for ( j = 0; j < nargs; j++ ) {
				out[ j ].push( getters[ j ]( arrays[ j ], i ) ); // use `Array#push` to ensure "fast" elements
			}
		}
	}
	return out;
}
Returns new arrays by applying a mask to one or more provided input arrays in a single pass.

@param {Collection} x - first input array
@param {Collection} [...arrays] - additional input arrays
@param {Collection} mask - mask array
@returns {Array<Array>} output arrays

@example
var x = [ 1, 2, 3, 4 ];
var y = [ 5, 6, 7, 8 ];
var mask = [ 0, 1, 0, 1 ];

var out = mskfiltern( x, y, mask );
// returns [ [ 2, 4 ], [ 6, 8 ] ]