Наследование: IExtensible
        protected static void PrintAlert(FeedEntity feedEntity)
        {
            if (feedEntity.Alert == null) {
                return;
            }
            Console.WriteLine("Cause: {0}", feedEntity.Alert.Cause.ToString());
            Console.WriteLine("Effect: {0}", feedEntity.Alert.Effect.ToString());
            Console.WriteLine("Url: {0}", feedEntity.Alert.Url);
            Console.WriteLine("=========================================");
            Console.WriteLine("Trips Affected");
            Console.WriteLine("=========================================");
            foreach (var selector in feedEntity.Alert.InformedEntity) {
                PrintTripDescriptor(selector.Trip);
            }

            Console.WriteLine("=========================================");
            Console.WriteLine("Alert Text");
            Console.WriteLine("=========================================");
            foreach (var text in feedEntity.Alert.HeaderText.Translations) {
                Console.WriteLine("Message: {0}", text.Text);
            }
        }
        protected static void PrintVehiclePosition(FeedEntity feedEntity)
        {
            if (feedEntity.Vehicle == null) {
                return;
            }

            PrintTripDescriptor(feedEntity.Vehicle.Trip);
            Console.WriteLine("Congestion Level: {0}", feedEntity.Vehicle.CongestionLevelValue);
            Console.WriteLine("Current Status: {0}", feedEntity.Vehicle.CurrentStatus);
            Console.WriteLine("Curent Stop Sequence: {0}", feedEntity.Vehicle.CurrentStopSequence);
            //Console.WriteLine(feedEntity.vehicle.position.ToString() ?? "");
            Console.WriteLine("Stop ID: {0}", feedEntity.Vehicle.StopId);
            Console.WriteLine("Timestamp: {0:F}", UnixTimeStampToDateTime(feedEntity.Vehicle.Timestamp));
        }
        protected static void PrintTripUpdate(FeedEntity feedEntity)
        {
            if (feedEntity.TripUpdate == null) {
                return;
            }

            PrintTripDescriptor(feedEntity.TripUpdate.Trip);
            foreach (var stopTimeUpdate in feedEntity.TripUpdate.StopTimeUpdates) {
                if (stopTimeUpdate.Arrival != null) {
                    Console.WriteLine("Arrival: {0}\tDelay: {1}\tUncertainty: {2}",
                        UnixTimeStampToDateTime((ulong) stopTimeUpdate.Arrival.Time), stopTimeUpdate.Arrival.Delay,
                        stopTimeUpdate.Arrival.Uncertainty);
                }
                if (stopTimeUpdate.Departure != null) {
                    Console.WriteLine("Departure: {0}\tDelay: {1}\tUncertainty: {2}",
                        UnixTimeStampToDateTime((ulong) stopTimeUpdate.Departure.Time), stopTimeUpdate.Departure.Delay,
                        stopTimeUpdate.Departure.Uncertainty);
                }
                Console.WriteLine("Schedule Relationship: {0}", stopTimeUpdate.ScheduleRelationship);
                Console.WriteLine("Stop ID: {0}", stopTimeUpdate.StopId);
                Console.WriteLine("Stop Sequence: {0}", stopTimeUpdate.StopSequence);

                if (stopTimeUpdate.NyctStopTimeUpdate != null) {
                    Console.WriteLine("Scheduled Track: {0}", stopTimeUpdate.NyctStopTimeUpdate.ScheduledTrack);
                    Console.WriteLine("Actual Track: {0}", stopTimeUpdate.NyctStopTimeUpdate.ActualTrack);
                }
                Console.WriteLine("-----------------------------------------------");
            }
        }