function createUnionTest( param, tag, requires, jsdocs ) {
	var elements;
	var asserts;
	var jsdoc;
	var desc;
	var tmpl;
	var type;
	var i;

	elements = tag.type.expression.elements;
	desc = '';
	asserts = '';
	jsdoc = '* @param {(';
	for ( i = 0; i < elements.length; i++ ) {
		if ( i > 0 ) {
			desc += ' or ';
			asserts += ' || ';
			jsdoc += '|';
		}
		type = elements[ i ].name;
		jsdoc += type;
		addRequire( requires, type );
		desc += DESCRIPTIONS[ type ] || '{{TODO:desc}}';
		asserts += '!is'+capitalize( type )+'( opts.'+param+' )';
	}
	jsdoc += ')} [' + tag.name + '] - '+ tag.description;
	jsdocs.push( jsdoc );
	tmpl = replace( CHECK, '{{param}}', param );
	tmpl = replace( tmpl, '{{asserts}}', asserts );
	tmpl = replace( tmpl, '{{desc}}', desc );
	return tmpl;
}
Creates a test for a parameter of a union type.

@private
@param {string} param - parameter name
@param {Object} tag - JSDoc tag
@param {StringArray} requires - array of require statements
@param {StringArray} jsdocs - array of JSDoc annotations
@returns {string} generated test