public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = (RecordsStrings != null ? RecordsStrings.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (Version != null ? Version.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ IsRoot.GetHashCode();
         hashCode = (hashCode * 397) ^ (Terms != null ? Terms.GetHashCode() : 0);
         hashCode = (hashCode * 397) ^ (Messages != null ? Messages.GetHashCode() : 0);
         return(hashCode);
     }
 }
 public bool Equals(SpfRecord other)
 {
     if (ReferenceEquals(null, other))
     {
         return(false);
     }
     if (ReferenceEquals(this, other))
     {
         return(true);
     }
     return(RecordsStrings.CollectionEqual(other.RecordsStrings) &&
            Equals(Version, other.Version) &&
            Equals(IsRoot, other.IsRoot) &&
            Terms.CollectionEqual(other.Terms) &&
            Messages.CollectionEqual(other.Messages));
 }