public override bool Equals(object obj)
{
if (obj.GetType() != typeof(Measure)) return false;
var measure = obj as Measure;
if (Label != measure.Label) return false;
if (Discrete != measure.Discrete) return false;
if (Probabilities == null && measure.Probabilities != null) return false;
if (measure.Probabilities == null && Probabilities != null) return false;
if (Probabilities != null)
{
if (Probabilities.Length != measure.Probabilities.Length) return false;
for (int i = 0; i < Probabilities.Length; i++)
if (!Probabilities[i].Equals(measure.Probabilities[i]))
return false;
}
return true;
}