/// <summary>
		///   Rebuild the given parameters list using the merged parameters.
		/// </summary>
		internal static void RebuildParameterList( Function fun, int paramsUsage, List<MergeParameter> mergedParams )
		{
			//Delete the old merged paramters.
			for ( int i = 0; i < mergedParams.Count; ++i )
			{
				var curMergeParamter = mergedParams[ i ];

				for ( int j = 0; j < curMergeParamter.SourceParameterCount; ++j )
				{
					Parameter curSrcParam = curMergeParamter.SourceParameter[ j ];

					if ( paramsUsage == (int)Operand.OpSemantic.Out )
					{
						fun.DeleteOutputParameter( curSrcParam );
					}
					else if ( paramsUsage == (int)Operand.OpSemantic.In )
					{
						fun.DeleteInputParameter( curSrcParam );
					}
				}
			}

			//Add the new combined paramters.
			for ( int i = 0; i < mergedParams.Count; ++i )
			{
				MergeParameter curMergeParameter = mergedParams[ i ];

				if ( paramsUsage == (int)Operand.OpSemantic.Out )
				{
					fun.AddOutputParameter( curMergeParameter.GetDestinationParameter( paramsUsage, i ) );
				}
				else if ( paramsUsage == (int)Operand.OpSemantic.In )
				{
					fun.AddInputParameter( curMergeParameter.GetDestinationParameter( paramsUsage, i ) );
				}
			}
		}