public override int GetHashCode()
{
// Getting hash codes from volatile variables doesn't seem a good move... //TODO Find an immutable way?
var hashCode = Bytes?.GetHashCode() ?? 0;
hashCode = (hashCode*397) ^ X;
hashCode = (hashCode*397) ^ Y;
hashCode = (hashCode*397) ^ Width;
hashCode = (hashCode*397) ^ Height;
return hashCode;
}