Generic extension methods can be written, but the core methods must remain non-generic (it's never acceptable in these situations to have generic without non-generic, because in order to call generic versions you must know the type T at compile time, and
there are plenty of cases where that's not the case).