function parseSubsequence( raw, str, max, strict ) {
	var s = seq2slice( str, max, true );
	if ( s.code ) {
		if ( s.code === 'ERR_SLICE_INVALID_INCREMENT' ) {
			throw new Error( format( 'invalid operation. A subsequence increment must be a non-zero integer. Value: `%s`.', raw ) );
		}
		if ( s.code === 'ERR_SLICE_INVALID_SUBSEQUENCE' ) {
			throw new Error( format( 'invalid operation. Unsupported slice operation. Value: `%s`.', raw ) );
		}
		// NOTE: the following error check must come last due to fall-through when in non-strict mode...
		if ( s.code === 'ERR_SLICE_OUT_OF_BOUNDS' ) {
			if ( strict ) {
				throw new RangeError( format( 'invalid operation. Slice exceeds array bounds.' ) );
			}
			// Repeat parsing, this time allowing for out-of-bounds slices:
			s = seq2slice( str, max, false );
		}
	}
	return s;
}
Parses a subsequence string.

@private
@param {string} raw - original unprocessed input string
@param {string} str - subsequence string
@param {NonNegativeInteger} max - index upper bound
@param {boolean} strict - boolean indicating whether to enforce strict bounds checking
@throws {Error} invalid slice operation
@throws {RangeError} slice exceeds array bounds
@returns {Slice} Slice object

@example
var s = parseSubsequence( ' ::-2 ', '::-2', 10, false );
// returns <Slice>