protected IEnumerable<object> UnwrapParameters(IEnumerable<object> parameters)
{
if (parameters == null)
{
yield break;
}
// Unwrap any inner lists because we can combine new parameters with the param array list.
foreach (var parm in parameters)
{
if (parm is IEnumerable<object>)
{
foreach (var obj in UnwrapParameters((IEnumerable<object>)parm)) {
yield return obj;
}
}
else
{
yield return parm;
}
}
}