function InspectSinkStream( options, clbk ) {
	var inspect;
	var opts;
	var err;
	if ( !(this instanceof InspectSinkStream) ) {
		if ( arguments.length > 1 ) {
			return new InspectSinkStream( options, clbk );
		}
		return new InspectSinkStream( options );
	}
	opts = assign( {}, DEFAULTS );
	if ( arguments.length > 1 ) {
		inspect = clbk;
		err = validate( opts, options );
		if ( err ) {
			throw err;
		}
	} else {
		inspect = options;
	}
	if ( !isFunction( inspect ) ) {
		throw new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', inspect ) );
	}
	// Make the stream a Writable stream:
	debug( 'Creating a writable stream configured with the following options: %s.', JSON.stringify( opts ) );
	Writable.call( this, opts );

	// The destruction state:
	setNonEnumerable( this, '_destroyed', false );

	// Initialize a chunk counter:
	setNonEnumerable( this, '_idx', -1 );

	// Cache a reference to the inspect callback:
	setNonEnumerableReadOnly( this, '_inspect', inspect );

	return this;
}
Inspect stream constructor.

@constructor
@param {Options} [options] - stream options
@param {boolean} [options.objectMode=false] - specifies whether the stream should operate in object mode
@param {NonNegativeNumber} [options.highWaterMark] - specifies the `Buffer` level for when `write()` starts returning `false`
@param {boolean} [options.decodeStrings=true] - specifies whether to encode strings as `Buffer` objects before writing data to a returned stream
@param {string} [options.defaultEncoding='utf8'] - default encoding when not explicitly specified when writing data
@param {Callback} clbk - callback to invoke upon receiving data
@throws {TypeError} options argument must be an object
@throws {TypeError} must provide valid options
@throws {TypeError} must provide a callback function
@returns {InspectSinkStream} inspect stream

@example
function log( chunk, idx ) {
    console.log( 'index: %d', idx );
    console.log( chunk );
}

var stream = new InspectSinkStream( log );

stream.write( 'a' );
stream.write( 'b' );
stream.write( 'c' );

stream.end();

// prints: index: 0
// prints: a
// prints: index: 1
// prints: b
// prints: index: 2
// prints: c