public Aircraft(string icao24)
 {
     Icao24                    = icao24;
     Callsign                  = new VersionedValue <string>();
     OriginCountry             = new VersionedValue <string>();
     LastPositionTime          = new VersionedValue <DateTime?>();
     LastMessageTime           = new VersionedValue <DateTime?>();
     Latitude                  = new VersionedValue <double?>();
     Longitude                 = new VersionedValue <double?>();
     AltitudeFeet              = new VersionedValue <float?>();
     OnGround                  = new VersionedValue <bool?>();
     GroundSpeedKnots          = new VersionedValue <float?>();
     Track                     = new VersionedValue <float?>();
     VerticalRateFeetPerSecond = new VersionedValue <float?>();
     Squawk                    = new VersionedValue <string>();
     SpecialPurposeIndicator   = new VersionedValue <bool?>();
     PositionSource            = new VersionedValue <PositionSource>();
 }
        public Aircraft(Aircraft other)
        {
            lock (other._SyncLock) {
                Icao24  = other.Icao24;
                Version = other.Version;
                LastSeenInOpenSkyUtc = other.LastSeenInOpenSkyUtc;

                Callsign                  = other.Callsign.Clone();
                OriginCountry             = other.OriginCountry.Clone();
                LastPositionTime          = other.LastPositionTime.Clone();
                LastMessageTime           = other.LastMessageTime.Clone();
                Latitude                  = other.Latitude.Clone();
                Longitude                 = other.Longitude.Clone();
                AltitudeFeet              = other.AltitudeFeet.Clone();
                OnGround                  = other.OnGround.Clone();
                GroundSpeedKnots          = other.GroundSpeedKnots.Clone();
                Track                     = other.Track.Clone();
                VerticalRateFeetPerSecond = other.VerticalRateFeetPerSecond.Clone();
                Squawk                    = other.Squawk.Clone();
                SpecialPurposeIndicator   = other.SpecialPurposeIndicator.Clone();
                PositionSource            = other.PositionSource.Clone();
            }
        }