public override bool Equals(Object obj){
if (obj is TypedArray) return this.ToString().Equals(obj.ToString());
Type t = obj as Type;
if (t == null) return false;
if (!t.IsArray) return false;
if (t.GetArrayRank() != this.rank) return false;
return this.elementType.Equals(t.GetElementType());
}