context: /* 
   * Provider server
   *
   * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
   *
   * OpenAPI spec version: v1
   * 
   * Generated by: https://github.com/swagger-api/swagger-codegen.git
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  using System;
  using System.Linq;
  using System.IO;
  using System.Text;
  using System.Text.RegularExpressions;
  using System.Collections;
  using System.Collections.Generic;
  using System.Collections.ObjectModel;
  using System.Runtime.Serialization;
  using Newtonsoft.Json;
  using Newtonsoft.Json.Converters;
  using System.ComponentModel.DataAnnotations;
  
  namespace IO.Swagger.Model
  {
      /// <summary>
      /// Page containing information about a supplier
      /// </summary>
      [DataContract]
      public partial class Page :  IEquatable<Page>, IValidatableObject
      {
          /// <summary>
          /// Initializes a new instance of the <see cref="Page" /> class.
          /// </summary>
          /// <param name="Owner">The owner of the page &#x3D;&gt; The supplier.</param>
          /// <param name="Description">The description of the page owner.</param>
          /// <param name="ContactInformation">The contactinformation of the page owner.</param>
          /// <param name="Location">The location of the page owner.</param>
          /// <param name="Products">The suppliers products.</param>
          /// <param name="Note">Note.</param>
          public Page(string Owner = null, string Description = null, string ContactInformation = null, string Location = null, List<Product> Products = null, Note Note = null)
          {
              this.Owner = Owner;
              this.Description = Description;
              this.ContactInformation = ContactInformation;
              this.Location = Location;
              this.Products = Products;
              this.Note = Note;
          }
          
          /// <summary>
          /// The owner of the page &#x3D;&gt; The supplier
          /// </summary>
          /// <value>The owner of the page &#x3D;&gt; The supplier</value>
          [DataMember(Name="owner", EmitDefaultValue=false)]
          public string Owner { get; set; }
          /// <summary>
          /// The description of the page owner
          /// </summary>
          /// <value>The description of the page owner</value>
          [DataMember(Name="description", EmitDefaultValue=false)]
          public string Description { get; set; }
          /// <summary>
          /// The contactinformation of the page owner
          /// </summary>
          /// <value>The contactinformation of the page owner</value>
          [DataMember(Name="contactInformation", EmitDefaultValue=false)]
          public string ContactInformation { get; set; }
          /// <summary>
          /// The location of the page owner
          /// </summary>
          /// <value>The location of the page owner</value>
          [DataMember(Name="location", EmitDefaultValue=false)]
          public string Location { get; set; }
          /// <summary>
          /// The suppliers products
          /// </summary>
          /// <value>The suppliers products</value>
          [DataMember(Name="products", EmitDefaultValue=false)]
          public List<Product> Products { get; set; }
          /// <summary>
          /// Gets or Sets Note
          /// </summary>
          [DataMember(Name="note", EmitDefaultValue=false)]
          public Note Note { get; set; }
          /// <summary>
          /// Returns the string presentation of the object
          /// </summary>
          /// <returns>String presentation of the object</returns>
          public override string ToString()
          {
              var sb = new StringBuilder();
              sb.Append("class Page {\n");
              sb.Append("  Owner: ").Append(Owner).Append("\n");
              sb.Append("  Description: ").Append(Description).Append("\n");
              sb.Append("  ContactInformation: ").Append(ContactInformation).Append("\n");
              sb.Append("  Location: ").Append(Location).Append("\n");
              sb.Append("  Products: ").Append(Products).Append("\n");
              sb.Append("  Note: ").Append(Note).Append("\n");
              sb.Append("}\n");
              return sb.ToString();
          }
    
          /// <summary>
          /// Returns the JSON string presentation of the object
          /// </summary>
          /// <returns>JSON string presentation of the object</returns>
          public string ToJson()
          {
              return JsonConvert.SerializeObject(this, Formatting.Indented);
          }
  
          /// <summary>
          /// Returns true if objects are equal
          /// </summary>
          /// <param name="obj">Object to be compared</param>
          /// <returns>Boolean</returns>
          public override bool Equals(object obj)
          {
              // credit: http://stackoverflow.com/a/10454552/677735
              return this.Equals(obj as Page);
          }
  
          /// <summary>
          /// Returns true if Page instances are equal
          /// </summary>
          /// <param name="other">Instance of Page to be compared</param>
          /// <returns>Boolean</returns>
          public bool Equals(Page other)
          {
              // credit: http://stackoverflow.com/a/10454552/677735
              if (other == null)
                  return false;
  
              return 
                  (
                      this.Owner == other.Owner ||
                      this.Owner != null &&
                      this.Owner.Equals(other.Owner)
                  ) && 
                  (
                      this.Description == other.Description ||
                      this.Description != null &&
                      this.Description.Equals(other.Description)
                  ) && 
                  (
                      this.ContactInformation == other.ContactInformation ||
                      this.ContactInformation != null &&
                      this.ContactInformation.Equals(other.ContactInformation)
                  ) && 
                  (
                      this.Location == other.Location ||
                      this.Location != null &&
                      this.Location.Equals(other.Location)
                  ) && 
                  (
                      this.Products == other.Products ||
                      this.Products != null &&
                      this.Products.SequenceEqual(other.Products)
                  ) && 
                  (
                      this.Note == other.Note ||
                      this.Note != null &&
                      this.Note.Equals(other.Note)
                  );
          }
  
          /// <summary>
          /// Gets the hash code
          /// </summary>
          /// <returns>Hash code</returns>
          public override int GetHashCode()
          {
              // credit: http://stackoverflow.com/a/263416/677735
              unchecked // Overflow is fine, just wrap
              {
                  int hash = 41;
                  // Suitable nullity checks etc, of course :)
                  if (this.Owner != null)
                      hash = hash * 59 + this.Owner.GetHashCode();
                  if (this.Description != null)
                      hash = hash * 59 + this.Description.GetHashCode();
                  if (this.ContactInformation != null)
                      hash = hash * 59 + this.ContactInformation.GetHashCode();
                  if (this.Location != null)
                      hash = hash * 59 + this.Location.GetHashCode();
                  if (this.Products != null)
                      hash = hash * 59 + this.Products.GetHashCode();
                  if (this.Note != null)
  
gt:                     hash = hash * 59 + this.Note.GetHashCode();