function signature2typed( sig, tags ) {
	var params;
	var match;
	var type;
	var tag;
	var N;
	var i;
	var j;

	match = sig.match( RE_SIGNATURE );
	if ( match === null ) {
		// Unable to extract parameters from signature...
		return sig;
	}
	params = match[ 2 ].split( ',' );
	if ( params.length !== tags.length ) {
		// Number of parameters in signature does not equal number of provided tags. Unable to include type information...
		return sig;
	}
	for ( i = 0; i < tags.length; i++ ) {
		tag = tags[ i ];
		if ( tag.type.type === 'UnionType' ) {
			N = tag.type.elements.length;
			type = '';
			for ( j = 0; j < N; j++ ) {
				type += tag.type.elements[ j ].name;
				if ( j < N-1 ) {
					type += '|';
				}
			}
		} else if ( tag.type.type === 'TypedObject' ) {
			type = tag.type.name + '<' + tag.type.of + '>';
		} else {
			type = tag.type.name;
		}
		params[ i ] = replace( params[ i ], tag.name, tag.name+':'+type );
	}
	sig = match[ 1 ] + '(' + params.join( ',' ) + ')';
	return sig;
}
Converts an untyped signature to a typed signature.

@param {string} sig - signature string
@param {ObjectArray} tags - parameter tag REPL text AST nodes
@returns {string} typed signature string

@example
// TODO