Perché Array non è un tipo generico?

Array è dichiarata come segue:

 public abstract class Array : ICloneable, IList, ICollection, IEnumerable { 

Mi chiedo perché non lo è:

 public partial class Array : ICloneable, IList, ICollection, IEnumerable { 
  1. Quale sarebbe il problema se fosse stato dichiarato un tipo generico?

  2. Se fosse un tipo generico, avremmo ancora bisogno di quello non generico? E se lo avessimo, potrebbe derivare solo da Array (come ipotizzato sopra)?

     public partial class Array: Array { 

aggiornare:

Il secondo punto è anche importante per l’ipotesi di non rendere la Array non generica come un tipo di base.