function prop2slice( target, property, strict ) {
	var prop = trim( property );

	// Case: multi-slice (e.g., 'MultiSlice(Slice(0,10,2),null,2,Slice(10,5,-1))')
	if ( isMultiSlice( prop ) ) {
		return parseMultiSlice( property, prop );
	}
	// Case: subsequence string (e.g., '...' or ':10,1,::-1,:,-5,2::3')
	if ( isSubsequence( prop ) || isEllipsis( prop ) ) {
		return parseSubsequence( property, prop, getShape( target, false ), strict ); // eslint-disable-line max-len
	}
	// Case: empty string
	if ( isEmptyString( prop ) ) {
		// Note that this is likely an error condition, but we explicitly handle here in order to match 1-D behavior and treat similarly to undefined/non-existing properties:
		return null;
	}
	// Case: array syntax (e.g., x[ [ Slice(0,10,1), null, Slice(4,null,-1) ] ] or x['1,2,3,4']) or Slice or integer or arbitrary string (including undefined/non-existent properties)
	return sargs2multislice( prop ); // note: will return `null` for invalid slice syntax and undefined/non-existing properties
}
Converts an n-dimensional ndarray indexing expression to a slice.

@private
@param {Object} target - target object
@param {string} property - property name
@param {boolean} strict - boolean indicating whether to enforce strict bounds checking
@throws {Error} invalid slice operation
@throws {RangeError} number of slice dimensions must match the number of array dimensions
@returns {MultiSlice} multi-slice object