/// <summary>
        /// Returns true if RouteResponsePath instances are equal
        /// </summary>
        /// <param name="input">Instance of RouteResponsePath to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(RouteResponsePath input)
        {
            if (input == null)
            {
                return(false);
            }

            return
                ((
                     Distance == input.Distance ||
                     (Distance != null &&
                      Distance.Equals(input.Distance))
                     ) &&
                 (
                     Time == input.Time ||
                     (Time != null &&
                      Time.Equals(input.Time))
                 ) &&
                 (
                     Ascend == input.Ascend ||
                     (Ascend != null &&
                      Ascend.Equals(input.Ascend))
                 ) &&
                 (
                     Descend == input.Descend ||
                     (Descend != null &&
                      Descend.Equals(input.Descend))
                 ) &&
                 (
                     Points == input.Points ||
                     (Points != null &&
                      Points.Equals(input.Points))
                 ) &&
                 (
                     PointsEncoded == input.PointsEncoded ||
                     (PointsEncoded != null &&
                      PointsEncoded.Equals(input.PointsEncoded))
                 ) &&
                 (
                     Bbox == input.Bbox ||
                     Bbox != null &&
                     Bbox.SequenceEqual(input.Bbox)
                 ) &&
                 (
                     SnappedWaypoints == input.SnappedWaypoints ||
                     (SnappedWaypoints != null &&
                      SnappedWaypoints.Equals(input.SnappedWaypoints))
                 ) &&
                 (
                     Instructions == input.Instructions ||
                     (Instructions != null &&
                      Instructions.Equals(input.Instructions))
                 ));
        }
 /// <summary>
 /// Gets the hash code
 /// </summary>
 /// <returns>Hash code</returns>
 public override int GetHashCode()
 {
     unchecked // Overflow is fine, just wrap
     {
         int hashCode = 41;
         if (Distance != null)
         {
             hashCode = hashCode * 59 + Distance.GetHashCode();
         }
         if (Time != null)
         {
             hashCode = hashCode * 59 + Time.GetHashCode();
         }
         if (Ascend != null)
         {
             hashCode = hashCode * 59 + Ascend.GetHashCode();
         }
         if (Descend != null)
         {
             hashCode = hashCode * 59 + Descend.GetHashCode();
         }
         if (Points != null)
         {
             hashCode = hashCode * 59 + Points.GetHashCode();
         }
         if (PointsEncoded != null)
         {
             hashCode = hashCode * 59 + PointsEncoded.GetHashCode();
         }
         if (Bbox != null)
         {
             hashCode = hashCode * 59 + Bbox.GetHashCode();
         }
         if (SnappedWaypoints != null)
         {
             hashCode = hashCode * 59 + SnappedWaypoints.GetHashCode();
         }
         if (Instructions != null)
         {
             hashCode = hashCode * 59 + Instructions.GetHashCode();
         }
         return(hashCode);
     }
 }