/// <summary>
        /// Creates new <see cref="Cargo"/> object with provided tracking id and route specification.
        /// </summary>
        /// <param name="trackingId">Tracking id of this cargo.</param>
        /// <param name="routeSpecification">Route specification.</param>
        public Cargo(TrackingId trackingId, RouteSpecification routeSpecification)
        {
            if (trackingId == null)
            {
                throw new ArgumentNullException("trackingId");
            }

            if (routeSpecification == null)
            {
                throw new ArgumentNullException("routeSpecification");
            }

            TrackingId         = trackingId;
            RouteSpecification = routeSpecification;
            Delivery           = Delivery.DerivedFrom(RouteSpecification, Itinerary, null);
        }
        /// <summary>
        /// Creates new <see cref="Cargo"/> object with provided tracking id and route specification.
        /// </summary>
        /// <param name="trackingId">Tracking id of this cargo.</param>
        /// <param name="routeSpecification">Route specification.</param>
        public Cargo(TrackingId trackingId, RouteSpecification routeSpecification)
        {
            if (trackingId == null)
            {
                throw new ArgumentNullException("trackingId");
            }

            if (routeSpecification == null)
            {
                throw new ArgumentNullException("routeSpecification");
            }

            TrackingId         = trackingId;
            RouteSpecification = routeSpecification;
            Delivery           = Delivery.DerivedFrom(RouteSpecification, Itinerary, null);
        }