public override bool Equals(object obj) {
if (object.ReferenceEquals(this, obj)) return true;
if (object.ReferenceEquals(this, null)) return false;
if (object.ReferenceEquals(obj, null)) return false;
if (!(obj is Sound)) return false;
Sound x = (Sound)obj;
if (this.MySampleRate != x.MySampleRate) return false;
if (this.MyBitsPerSample != x.MyBitsPerSample) return false;
if (this.MyBytes.Length != x.MyBytes.Length) return false;
for (int i = 0; i < this.MyBytes.Length; i++) {
if (this.MyBytes[i].Length != x.MyBytes[i].Length) return false;
for (int j = 0; j < this.MyBytes[i].Length; j++) {
if (this.MyBytes[i][j] != x.MyBytes[i][j]) return false;
}
}
return true;
}
}