Extensión C # EmptyIfNull para cualquier IEnumerable para devolver un tipo derivado vacío

Suponiendo que los nulos y las colecciones vacías son equivalentes, estoy tratando de escribir un método de extensión para que los tipos IEnumerable devuelvan colecciones vacías del tipo derivado en lugar de nulos. De esta manera, no tengo que repetir verificaciones nulas por todo el lugar, y no obtengo una devolución IEnumerable que tengo que lanzar.

p.ej.

List<Foo> MethodReturningFooList()
{
...
}

Foo[] MethodReturningFooArray()
{
...
}

void Bar()
{
    List<Foo> list = MethodReturningFooList().EmptyIfNull();
    Foo[] arr = MethodReturningFooArray().EmptyIfNull();
}

public static class Extension
{
    public static T EmptyIfNull<T>(this T iEnumerable)
        where T : IEnumerable, new()
    {
        var newTypeFunc = Expression.Lambda<Func<T>>(Expression.New(typeof(T))).Compile();
        return iEnumerable == null ? newTypeFunc() : iEnumerable;
    }
}

Esta extensión parece funcionar, pero ¿alguien ve algún inconveniente?

Respuestas a la pregunta(3)

Su respuesta a la pregunta