public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = (Value != null ? Value.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ Valid.GetHashCode();
         hashCode = (hashCode * 397) ^ (Explanation != null ? Explanation.GetHashCode() : 0);
         return(hashCode);
     }
 }
 /// <summary>
 /// Gets the hash code
 /// </summary>
 /// <returns>Hash code</returns>
 public override int GetHashCode()
 {
     unchecked // Overflow is fine, just wrap
     {
         var hashCode = 41;
         // Suitable nullity checks etc, of course :)
         if (Id != null)
         {
             hashCode = hashCode * 59 + Id.GetHashCode();
         }
         if (Valid != null)
         {
             hashCode = hashCode * 59 + Valid.GetHashCode();
         }
         if (Remaining != null)
         {
             hashCode = hashCode * 59 + Remaining.GetHashCode();
         }
         return(hashCode);
     }
 }