code: function ZPassThrough(options) {
  	if(options) {
  		if(options.objectMode) {
  			options.readableObjectMode = true;
  			options.writableObjectMode = true;
  		}
  		if(options.readableObjectMode && options.writableObjectMode) {
  			options.objectMode = true;
  		}
  	}
  	PassThrough.call(this, options);
  	// note: exclamation marks are used to convert to booleans
  	if(options && !options.objectMode && (!options.readableObjectMode) !== (!options.writableObjectMode)) {
  		this._writableState.objectMode = !!options.writableObjectMode;
  		this._readableState.objectMode = !!options.readableObjectMode;
  	}
  	if(options && options.readableObjectMode) {
  		this._readableState.highWaterMark = 16;
  	}
  	if(options && options.writableObjectMode) {
  		this._writableState.highWaterMark = 16;
  	}
  	streamMixins.call(this, PassThrough.prototype, options);
  	readableMixins.call(this, options);
  	writableMixins.call(this, options);
  }
docs: ZPassThrough writes everything written to it into the other side
  
  @class ZPassThrough
  @constructor
  @extends PassThrough
  @uses _Stream
  @uses _Readable
  @uses _Writable
  @param {Object} [options] - Stream options