//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.1
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

// 
// This code was auto-generated by Microsoft.Silverlight.ServiceReference, version 4.0.50401.0
// 
namespace Route.GeocodeService {
    using System.Runtime.Serialization;
    
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="RequestBase", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Route.GeocodeService.ReverseGeocodeRequest))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Route.GeocodeService.GeocodeRequest))]
    public partial class RequestBase : object, System.ComponentModel.INotifyPropertyChanged {
        
        private Microsoft.Maps.MapControl.Credentials CredentialsField;
        
        private string CultureField;
        
        private Route.GeocodeService.ExecutionOptions ExecutionOptionsField;
        
        private Route.GeocodeService.UserProfile UserProfileField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Maps.MapControl.Credentials Credentials {
            get {
                return this.CredentialsField;
            }
            set {
                if ((object.ReferenceEquals(this.CredentialsField, value) != true)) {
                    this.CredentialsField = value;
                    this.RaisePropertyChanged("Credentials");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Culture {
            get {
                return this.CultureField;
            }
            set {
                if ((object.ReferenceEquals(this.CultureField, value) != true)) {
                    this.CultureField = value;
                    this.RaisePropertyChanged("Culture");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.ExecutionOptions ExecutionOptions {
            get {
                return this.ExecutionOptionsField;
            }
            set {
                if ((object.ReferenceEquals(this.ExecutionOptionsField, value) != true)) {
                    this.ExecutionOptionsField = value;
                    this.RaisePropertyChanged("ExecutionOptions");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.UserProfile UserProfile {
            get {
                return this.UserProfileField;
            }
            set {
                if ((object.ReferenceEquals(this.UserProfileField, value) != true)) {
                    this.UserProfileField = value;
                    this.RaisePropertyChanged("UserProfile");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ExecutionOptions", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class ExecutionOptions : object, System.ComponentModel.INotifyPropertyChanged {
        
        private bool SuppressFaultsField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public bool SuppressFaults {
            get {
                return this.SuppressFaultsField;
            }
            set {
                if ((this.SuppressFaultsField.Equals(value) != true)) {
                    this.SuppressFaultsField = value;
                    this.RaisePropertyChanged("SuppressFaults");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="UserProfile", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Microsoft.Maps.MapControl.LocationRect))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Route.GeocodeService.Circle))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Route.GeocodeService.Polygon))]
    public partial class UserProfile : object, System.ComponentModel.INotifyPropertyChanged {
        
        private Route.GeocodeService.Heading CurrentHeadingField;
        
        private Route.GeocodeService.UserLocation CurrentLocationField;
        
        private Route.GeocodeService.DeviceType DeviceTypeField;
        
        private Route.GeocodeService.DistanceUnit DistanceUnitField;
        
        private string IPAddressField;
        
        private Microsoft.Maps.MapControl.ShapeBase MapViewField;
        
        private Route.GeocodeService.SizeOfint ScreenSizeField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.Heading CurrentHeading {
            get {
                return this.CurrentHeadingField;
            }
            set {
                if ((object.ReferenceEquals(this.CurrentHeadingField, value) != true)) {
                    this.CurrentHeadingField = value;
                    this.RaisePropertyChanged("CurrentHeading");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.UserLocation CurrentLocation {
            get {
                return this.CurrentLocationField;
            }
            set {
                if ((object.ReferenceEquals(this.CurrentLocationField, value) != true)) {
                    this.CurrentLocationField = value;
                    this.RaisePropertyChanged("CurrentLocation");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.DeviceType DeviceType {
            get {
                return this.DeviceTypeField;
            }
            set {
                if ((this.DeviceTypeField.Equals(value) != true)) {
                    this.DeviceTypeField = value;
                    this.RaisePropertyChanged("DeviceType");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.DistanceUnit DistanceUnit {
            get {
                return this.DistanceUnitField;
            }
            set {
                if ((this.DistanceUnitField.Equals(value) != true)) {
                    this.DistanceUnitField = value;
                    this.RaisePropertyChanged("DistanceUnit");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string IPAddress {
            get {
                return this.IPAddressField;
            }
            set {
                if ((object.ReferenceEquals(this.IPAddressField, value) != true)) {
                    this.IPAddressField = value;
                    this.RaisePropertyChanged("IPAddress");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Maps.MapControl.ShapeBase MapView {
            get {
                return this.MapViewField;
            }
            set {
                if ((object.ReferenceEquals(this.MapViewField, value) != true)) {
                    this.MapViewField = value;
                    this.RaisePropertyChanged("MapView");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.SizeOfint ScreenSize {
            get {
                return this.ScreenSizeField;
            }
            set {
                if ((object.ReferenceEquals(this.ScreenSizeField, value) != true)) {
                    this.ScreenSizeField = value;
                    this.RaisePropertyChanged("ScreenSize");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ReverseGeocodeRequest", Namespace="http://dev.virtualearth.net/webservices/v1/geocode")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Route.GeocodeService.GeocodeLocation))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Route.GeocodeService.UserLocation))]
    public partial class ReverseGeocodeRequest : Route.GeocodeService.RequestBase {
        
        private Microsoft.Maps.MapControl.Location LocationField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Maps.MapControl.Location Location {
            get {
                return this.LocationField;
            }
            set {
                if ((object.ReferenceEquals(this.LocationField, value) != true)) {
                    this.LocationField = value;
                    this.RaisePropertyChanged("Location");
                }
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="GeocodeRequest", Namespace="http://dev.virtualearth.net/webservices/v1/geocode")]
    public partial class GeocodeRequest : Route.GeocodeService.RequestBase {
        
        private Route.GeocodeService.Address AddressField;
        
        private Route.GeocodeService.GeocodeOptions OptionsField;
        
        private string QueryField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.Address Address {
            get {
                return this.AddressField;
            }
            set {
                if ((object.ReferenceEquals(this.AddressField, value) != true)) {
                    this.AddressField = value;
                    this.RaisePropertyChanged("Address");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.GeocodeOptions Options {
            get {
                return this.OptionsField;
            }
            set {
                if ((object.ReferenceEquals(this.OptionsField, value) != true)) {
                    this.OptionsField = value;
                    this.RaisePropertyChanged("Options");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Query {
            get {
                return this.QueryField;
            }
            set {
                if ((object.ReferenceEquals(this.QueryField, value) != true)) {
                    this.QueryField = value;
                    this.RaisePropertyChanged("Query");
                }
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Address", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class Address : object, System.ComponentModel.INotifyPropertyChanged {
        
        private string AddressLineField;
        
        private string AdminDistrictField;
        
        private string CountryRegionField;
        
        private string DistrictField;
        
        private string FormattedAddressField;
        
        private string LocalityField;
        
        private string PostalCodeField;
        
        private string PostalTownField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string AddressLine {
            get {
                return this.AddressLineField;
            }
            set {
                if ((object.ReferenceEquals(this.AddressLineField, value) != true)) {
                    this.AddressLineField = value;
                    this.RaisePropertyChanged("AddressLine");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string AdminDistrict {
            get {
                return this.AdminDistrictField;
            }
            set {
                if ((object.ReferenceEquals(this.AdminDistrictField, value) != true)) {
                    this.AdminDistrictField = value;
                    this.RaisePropertyChanged("AdminDistrict");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string CountryRegion {
            get {
                return this.CountryRegionField;
            }
            set {
                if ((object.ReferenceEquals(this.CountryRegionField, value) != true)) {
                    this.CountryRegionField = value;
                    this.RaisePropertyChanged("CountryRegion");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string District {
            get {
                return this.DistrictField;
            }
            set {
                if ((object.ReferenceEquals(this.DistrictField, value) != true)) {
                    this.DistrictField = value;
                    this.RaisePropertyChanged("District");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string FormattedAddress {
            get {
                return this.FormattedAddressField;
            }
            set {
                if ((object.ReferenceEquals(this.FormattedAddressField, value) != true)) {
                    this.FormattedAddressField = value;
                    this.RaisePropertyChanged("FormattedAddress");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Locality {
            get {
                return this.LocalityField;
            }
            set {
                if ((object.ReferenceEquals(this.LocalityField, value) != true)) {
                    this.LocalityField = value;
                    this.RaisePropertyChanged("Locality");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string PostalCode {
            get {
                return this.PostalCodeField;
            }
            set {
                if ((object.ReferenceEquals(this.PostalCodeField, value) != true)) {
                    this.PostalCodeField = value;
                    this.RaisePropertyChanged("PostalCode");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string PostalTown {
            get {
                return this.PostalTownField;
            }
            set {
                if ((object.ReferenceEquals(this.PostalTownField, value) != true)) {
                    this.PostalTownField = value;
                    this.RaisePropertyChanged("PostalTown");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="GeocodeOptions", Namespace="http://dev.virtualearth.net/webservices/v1/geocode")]
    public partial class GeocodeOptions : object, System.ComponentModel.INotifyPropertyChanged {
        
        private System.Nullable<int> CountField;
        
        private System.Collections.ObjectModel.ObservableCollection<Route.GeocodeService.FilterBase> FiltersField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Nullable<int> Count {
            get {
                return this.CountField;
            }
            set {
                if ((this.CountField.Equals(value) != true)) {
                    this.CountField = value;
                    this.RaisePropertyChanged("Count");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Route.GeocodeService.FilterBase> Filters {
            get {
                return this.FiltersField;
            }
            set {
                if ((object.ReferenceEquals(this.FiltersField, value) != true)) {
                    this.FiltersField = value;
                    this.RaisePropertyChanged("Filters");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Heading", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class Heading : object, System.ComponentModel.INotifyPropertyChanged {
        
        private double OrientationField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public double Orientation {
            get {
                return this.OrientationField;
            }
            set {
                if ((this.OrientationField.Equals(value) != true)) {
                    this.OrientationField = value;
                    this.RaisePropertyChanged("Orientation");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="UserLocation", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class UserLocation : Microsoft.Maps.MapControl.Location, System.ComponentModel.INotifyPropertyChanged {
        
        private Route.GeocodeService.Confidence ConfidenceField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.Confidence Confidence {
            get {
                return this.ConfidenceField;
            }
            set {
                if ((this.ConfidenceField.Equals(value) != true)) {
                    this.ConfidenceField = value;
                    this.RaisePropertyChanged("Confidence");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="SizeOfint", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class SizeOfint : object, System.ComponentModel.INotifyPropertyChanged {
        
        private int HeightField;
        
        private int WidthField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int Height {
            get {
                return this.HeightField;
            }
            set {
                if ((this.HeightField.Equals(value) != true)) {
                    this.HeightField = value;
                    this.RaisePropertyChanged("Height");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int Width {
            get {
                return this.WidthField;
            }
            set {
                if ((this.WidthField.Equals(value) != true)) {
                    this.WidthField = value;
                    this.RaisePropertyChanged("Width");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Circle", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Route.GeocodeService.GeocodeLocation))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Route.GeocodeService.UserLocation))]
    public partial class Circle : Microsoft.Maps.MapControl.ShapeBase, System.ComponentModel.INotifyPropertyChanged {
        
        private Microsoft.Maps.MapControl.Location CenterField;
        
        private Route.GeocodeService.DistanceUnit DistanceUnitField;
        
        private double RadiusField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Maps.MapControl.Location Center {
            get {
                return this.CenterField;
            }
            set {
                if ((object.ReferenceEquals(this.CenterField, value) != true)) {
                    this.CenterField = value;
                    this.RaisePropertyChanged("Center");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.DistanceUnit DistanceUnit {
            get {
                return this.DistanceUnitField;
            }
            set {
                if ((this.DistanceUnitField.Equals(value) != true)) {
                    this.DistanceUnitField = value;
                    this.RaisePropertyChanged("DistanceUnit");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public double Radius {
            get {
                return this.RadiusField;
            }
            set {
                if ((this.RadiusField.Equals(value) != true)) {
                    this.RadiusField = value;
                    this.RaisePropertyChanged("Radius");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Polygon", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class Polygon : Microsoft.Maps.MapControl.ShapeBase, System.ComponentModel.INotifyPropertyChanged {
        
        private System.Collections.ObjectModel.ObservableCollection<Microsoft.Maps.MapControl.Location> VerticesField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Microsoft.Maps.MapControl.Location> Vertices {
            get {
                return this.VerticesField;
            }
            set {
                if ((object.ReferenceEquals(this.VerticesField, value) != true)) {
                    this.VerticesField = value;
                    this.RaisePropertyChanged("Vertices");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="DeviceType", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public enum DeviceType : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Desktop = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Mobile = 1,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="DistanceUnit", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public enum DistanceUnit : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Kilometer = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Mile = 1,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Confidence", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public enum Confidence : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        High = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Medium = 1,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Low = 2,
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="GeocodeLocation", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class GeocodeLocation : Microsoft.Maps.MapControl.Location, System.ComponentModel.INotifyPropertyChanged {
        
        private string CalculationMethodField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string CalculationMethod {
            get {
                return this.CalculationMethodField;
            }
            set {
                if ((object.ReferenceEquals(this.CalculationMethodField, value) != true)) {
                    this.CalculationMethodField = value;
                    this.RaisePropertyChanged("CalculationMethod");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="FilterBase", Namespace="http://dev.virtualearth.net/webservices/v1/geocode")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Route.GeocodeService.ConfidenceFilter))]
    public partial class FilterBase : object, System.ComponentModel.INotifyPropertyChanged {
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ConfidenceFilter", Namespace="http://dev.virtualearth.net/webservices/v1/geocode")]
    public partial class ConfidenceFilter : Route.GeocodeService.FilterBase {
        
        private Route.GeocodeService.Confidence MinimumConfidenceField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.Confidence MinimumConfidence {
            get {
                return this.MinimumConfidenceField;
            }
            set {
                if ((this.MinimumConfidenceField.Equals(value) != true)) {
                    this.MinimumConfidenceField = value;
                    this.RaisePropertyChanged("MinimumConfidence");
                }
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ResponseBase", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Route.GeocodeService.GeocodeResponse))]
    public partial class ResponseBase : object, System.ComponentModel.INotifyPropertyChanged {
        
        private System.Uri BrandLogoUriField;
        
        private Route.GeocodeService.ResponseSummary ResponseSummaryField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Uri BrandLogoUri {
            get {
                return this.BrandLogoUriField;
            }
            set {
                if ((object.ReferenceEquals(this.BrandLogoUriField, value) != true)) {
                    this.BrandLogoUriField = value;
                    this.RaisePropertyChanged("BrandLogoUri");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.ResponseSummary ResponseSummary {
            get {
                return this.ResponseSummaryField;
            }
            set {
                if ((object.ReferenceEquals(this.ResponseSummaryField, value) != true)) {
                    this.ResponseSummaryField = value;
                    this.RaisePropertyChanged("ResponseSummary");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ResponseSummary", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public partial class ResponseSummary : object, System.ComponentModel.INotifyPropertyChanged {
        
        private Route.GeocodeService.AuthenticationResultCode AuthenticationResultCodeField;
        
        private string CopyrightField;
        
        private string FaultReasonField;
        
        private Route.GeocodeService.ResponseStatusCode StatusCodeField;
        
        private string TraceIdField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.AuthenticationResultCode AuthenticationResultCode {
            get {
                return this.AuthenticationResultCodeField;
            }
            set {
                if ((this.AuthenticationResultCodeField.Equals(value) != true)) {
                    this.AuthenticationResultCodeField = value;
                    this.RaisePropertyChanged("AuthenticationResultCode");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string Copyright {
            get {
                return this.CopyrightField;
            }
            set {
                if ((object.ReferenceEquals(this.CopyrightField, value) != true)) {
                    this.CopyrightField = value;
                    this.RaisePropertyChanged("Copyright");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string FaultReason {
            get {
                return this.FaultReasonField;
            }
            set {
                if ((object.ReferenceEquals(this.FaultReasonField, value) != true)) {
                    this.FaultReasonField = value;
                    this.RaisePropertyChanged("FaultReason");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.ResponseStatusCode StatusCode {
            get {
                return this.StatusCodeField;
            }
            set {
                if ((this.StatusCodeField.Equals(value) != true)) {
                    this.StatusCodeField = value;
                    this.RaisePropertyChanged("StatusCode");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string TraceId {
            get {
                return this.TraceIdField;
            }
            set {
                if ((object.ReferenceEquals(this.TraceIdField, value) != true)) {
                    this.TraceIdField = value;
                    this.RaisePropertyChanged("TraceId");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="GeocodeResponse", Namespace="http://dev.virtualearth.net/webservices/v1/geocode")]
    public partial class GeocodeResponse : Route.GeocodeService.ResponseBase {
        
        private System.Collections.ObjectModel.ObservableCollection<Route.GeocodeService.GeocodeResult> ResultsField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Route.GeocodeService.GeocodeResult> Results {
            get {
                return this.ResultsField;
            }
            set {
                if ((object.ReferenceEquals(this.ResultsField, value) != true)) {
                    this.ResultsField = value;
                    this.RaisePropertyChanged("Results");
                }
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="GeocodeResult", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Route.GeocodeService.GeocodeLocation))]
    [System.Runtime.Serialization.KnownTypeAttribute(typeof(Route.GeocodeService.UserLocation))]
    public partial class GeocodeResult : object, System.ComponentModel.INotifyPropertyChanged {
        
        private Route.GeocodeService.Address AddressField;
        
        private Microsoft.Maps.MapControl.LocationRect BestViewField;
        
        private Route.GeocodeService.Confidence ConfidenceField;
        
        private string DisplayNameField;
        
        private string EntityTypeField;
        
        private System.Collections.ObjectModel.ObservableCollection<Route.GeocodeService.GeocodeLocation> LocationsField;
        
        private System.Collections.ObjectModel.ObservableCollection<string> MatchCodesField;
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.Address Address {
            get {
                return this.AddressField;
            }
            set {
                if ((object.ReferenceEquals(this.AddressField, value) != true)) {
                    this.AddressField = value;
                    this.RaisePropertyChanged("Address");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Microsoft.Maps.MapControl.LocationRect BestView {
            get {
                return this.BestViewField;
            }
            set {
                if ((object.ReferenceEquals(this.BestViewField, value) != true)) {
                    this.BestViewField = value;
                    this.RaisePropertyChanged("BestView");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Route.GeocodeService.Confidence Confidence {
            get {
                return this.ConfidenceField;
            }
            set {
                if ((this.ConfidenceField.Equals(value) != true)) {
                    this.ConfidenceField = value;
                    this.RaisePropertyChanged("Confidence");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string DisplayName {
            get {
                return this.DisplayNameField;
            }
            set {
                if ((object.ReferenceEquals(this.DisplayNameField, value) != true)) {
                    this.DisplayNameField = value;
                    this.RaisePropertyChanged("DisplayName");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public string EntityType {
            get {
                return this.EntityTypeField;
            }
            set {
                if ((object.ReferenceEquals(this.EntityTypeField, value) != true)) {
                    this.EntityTypeField = value;
                    this.RaisePropertyChanged("EntityType");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<Route.GeocodeService.GeocodeLocation> Locations {
            get {
                return this.LocationsField;
            }
            set {
                if ((object.ReferenceEquals(this.LocationsField, value) != true)) {
                    this.LocationsField = value;
                    this.RaisePropertyChanged("Locations");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public System.Collections.ObjectModel.ObservableCollection<string> MatchCodes {
            get {
                return this.MatchCodesField;
            }
            set {
                if ((object.ReferenceEquals(this.MatchCodesField, value) != true)) {
                    this.MatchCodesField = value;
                    this.RaisePropertyChanged("MatchCodes");
                }
            }
        }
        
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
        
        protected void RaisePropertyChanged(string propertyName) {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if ((propertyChanged != null)) {
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="AuthenticationResultCode", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public enum AuthenticationResultCode : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        None = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        NoCredentials = 1,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        ValidCredentials = 2,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        InvalidCredentials = 3,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        CredentialsExpired = 4,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        NotAuthorized = 7,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="ResponseStatusCode", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
    public enum ResponseStatusCode : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Success = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        BadRequest = 1,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        ServerError = 2,
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.ServiceContractAttribute(Namespace="http://dev.virtualearth.net/webservices/v1/geocode/contracts", ConfigurationName="GeocodeService.IGeocodeService")]
    public interface IGeocodeService {
        
        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/Geoc" +
            "ode", ReplyAction="http://dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/Geoc" +
            "odeResponse")]
        [System.ServiceModel.FaultContractAttribute(typeof(Route.GeocodeService.ResponseSummary), Action="http://dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/Geoc" +
            "odeResponseSummaryFault", Name="ResponseSummary", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
        System.IAsyncResult BeginGeocode(Route.GeocodeService.GeocodeRequest request, System.AsyncCallback callback, object asyncState);
        
        Route.GeocodeService.GeocodeResponse EndGeocode(System.IAsyncResult result);
        
        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/Reve" +
            "rseGeocode", ReplyAction="http://dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/Reve" +
            "rseGeocodeResponse")]
        [System.ServiceModel.FaultContractAttribute(typeof(Route.GeocodeService.ResponseSummary), Action="http://dev.virtualearth.net/webservices/v1/geocode/contracts/IGeocodeService/Reve" +
            "rseGeocodeResponseSummaryFault", Name="ResponseSummary", Namespace="http://dev.virtualearth.net/webservices/v1/common")]
        System.IAsyncResult BeginReverseGeocode(Route.GeocodeService.ReverseGeocodeRequest request, System.AsyncCallback callback, object asyncState);
        
        Route.GeocodeService.GeocodeResponse EndReverseGeocode(System.IAsyncResult result);
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public interface IGeocodeServiceChannel : Route.GeocodeService.IGeocodeService, System.ServiceModel.IClientChannel {
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public partial class GeocodeCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        public GeocodeCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        public Route.GeocodeService.GeocodeResponse Result {
            get {
                base.RaiseExceptionIfNecessary();
                return ((Route.GeocodeService.GeocodeResponse)(this.results[0]));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public partial class ReverseGeocodeCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        public ReverseGeocodeCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        public Route.GeocodeService.GeocodeResponse Result {
            get {
                base.RaiseExceptionIfNecessary();
                return ((Route.GeocodeService.GeocodeResponse)(this.results[0]));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public partial class GeocodeServiceClient : System.ServiceModel.ClientBase<Route.GeocodeService.IGeocodeService>, Route.GeocodeService.IGeocodeService {
        
        private BeginOperationDelegate onBeginGeocodeDelegate;
        
        private EndOperationDelegate onEndGeocodeDelegate;
        
        private System.Threading.SendOrPostCallback onGeocodeCompletedDelegate;
        
        private BeginOperationDelegate onBeginReverseGeocodeDelegate;
        
        private EndOperationDelegate onEndReverseGeocodeDelegate;
        
        private System.Threading.SendOrPostCallback onReverseGeocodeCompletedDelegate;
        
        private BeginOperationDelegate onBeginOpenDelegate;
        
        private EndOperationDelegate onEndOpenDelegate;
        
        private System.Threading.SendOrPostCallback onOpenCompletedDelegate;
        
        private BeginOperationDelegate onBeginCloseDelegate;
        
        private EndOperationDelegate onEndCloseDelegate;
        
        private System.Threading.SendOrPostCallback onCloseCompletedDelegate;
        
        public GeocodeServiceClient() {
        }
        
        public GeocodeServiceClient(string endpointConfigurationName) : 
                base(endpointConfigurationName) {
        }
        
        public GeocodeServiceClient(string endpointConfigurationName, string remoteAddress) : 
                base(endpointConfigurationName, remoteAddress) {
        }
        
        public GeocodeServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(endpointConfigurationName, remoteAddress) {
        }
        
        public GeocodeServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(binding, remoteAddress) {
        }
        
        public System.Net.CookieContainer CookieContainer {
            get {
                System.ServiceModel.Channels.IHttpCookieContainerManager httpCookieContainerManager = this.InnerChannel.GetProperty<System.ServiceModel.Channels.IHttpCookieContainerManager>();
                if ((httpCookieContainerManager != null)) {
                    return httpCookieContainerManager.CookieContainer;
                }
                else {
                    return null;
                }
            }
            set {
                System.ServiceModel.Channels.IHttpCookieContainerManager httpCookieContainerManager = this.InnerChannel.GetProperty<System.ServiceModel.Channels.IHttpCookieContainerManager>();
                if ((httpCookieContainerManager != null)) {
                    httpCookieContainerManager.CookieContainer = value;
                }
                else {
                    throw new System.InvalidOperationException("Unable to set the CookieContainer. Please make sure the binding contains an HttpC" +
                            "ookieContainerBindingElement.");
                }
            }
        }
        
        public event System.EventHandler<GeocodeCompletedEventArgs> GeocodeCompleted;
        
        public event System.EventHandler<ReverseGeocodeCompletedEventArgs> ReverseGeocodeCompleted;
        
        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> OpenCompleted;
        
        public event System.EventHandler<System.ComponentModel.AsyncCompletedEventArgs> CloseCompleted;
        
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        System.IAsyncResult Route.GeocodeService.IGeocodeService.BeginGeocode(Route.GeocodeService.GeocodeRequest request, System.AsyncCallback callback, object asyncState) {
            return base.Channel.BeginGeocode(request, callback, asyncState);
        }
        
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        Route.GeocodeService.GeocodeResponse Route.GeocodeService.IGeocodeService.EndGeocode(System.IAsyncResult result) {
            return base.Channel.EndGeocode(result);
        }
        
        private System.IAsyncResult OnBeginGeocode(object[] inValues, System.AsyncCallback callback, object asyncState) {
            Route.GeocodeService.GeocodeRequest request = ((Route.GeocodeService.GeocodeRequest)(inValues[0]));
            return ((Route.GeocodeService.IGeocodeService)(this)).BeginGeocode(request, callback, asyncState);
        }
        
        private object[] OnEndGeocode(System.IAsyncResult result) {
            Route.GeocodeService.GeocodeResponse retVal = ((Route.GeocodeService.IGeocodeService)(this)).EndGeocode(result);
            return new object[] {
                    retVal};
        }
        
        private void OnGeocodeCompleted(object state) {
            if ((this.GeocodeCompleted != null)) {
                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
                this.GeocodeCompleted(this, new GeocodeCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
            }
        }
        
        public void GeocodeAsync(Route.GeocodeService.GeocodeRequest request) {
            this.GeocodeAsync(request, null);
        }
        
        public void GeocodeAsync(Route.GeocodeService.GeocodeRequest request, object userState) {
            if ((this.onBeginGeocodeDelegate == null)) {
                this.onBeginGeocodeDelegate = new BeginOperationDelegate(this.OnBeginGeocode);
            }
            if ((this.onEndGeocodeDelegate == null)) {
                this.onEndGeocodeDelegate = new EndOperationDelegate(this.OnEndGeocode);
            }
            if ((this.onGeocodeCompletedDelegate == null)) {
                this.onGeocodeCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnGeocodeCompleted);
            }
            base.InvokeAsync(this.onBeginGeocodeDelegate, new object[] {
                        request}, this.onEndGeocodeDelegate, this.onGeocodeCompletedDelegate, userState);
        }
        
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        System.IAsyncResult Route.GeocodeService.IGeocodeService.BeginReverseGeocode(Route.GeocodeService.ReverseGeocodeRequest request, System.AsyncCallback callback, object asyncState) {
            return base.Channel.BeginReverseGeocode(request, callback, asyncState);
        }
        
        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        Route.GeocodeService.GeocodeResponse Route.GeocodeService.IGeocodeService.EndReverseGeocode(System.IAsyncResult result) {
            return base.Channel.EndReverseGeocode(result);
        }
        
        private System.IAsyncResult OnBeginReverseGeocode(object[] inValues, System.AsyncCallback callback, object asyncState) {
            Route.GeocodeService.ReverseGeocodeRequest request = ((Route.GeocodeService.ReverseGeocodeRequest)(inValues[0]));
            return ((Route.GeocodeService.IGeocodeService)(this)).BeginReverseGeocode(request, callback, asyncState);
        }
        
        private object[] OnEndReverseGeocode(System.IAsyncResult result) {
            Route.GeocodeService.GeocodeResponse retVal = ((Route.GeocodeService.IGeocodeService)(this)).EndReverseGeocode(result);
            return new object[] {
                    retVal};
        }
        
        private void OnReverseGeocodeCompleted(object state) {
            if ((this.ReverseGeocodeCompleted != null)) {
                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
                this.ReverseGeocodeCompleted(this, new ReverseGeocodeCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
            }
        }
        
        public void ReverseGeocodeAsync(Route.GeocodeService.ReverseGeocodeRequest request) {
            this.ReverseGeocodeAsync(request, null);
        }
        
        public void ReverseGeocodeAsync(Route.GeocodeService.ReverseGeocodeRequest request, object userState) {
            if ((this.onBeginReverseGeocodeDelegate == null)) {
                this.onBeginReverseGeocodeDelegate = new BeginOperationDelegate(this.OnBeginReverseGeocode);
            }
            if ((this.onEndReverseGeocodeDelegate == null)) {
                this.onEndReverseGeocodeDelegate = new EndOperationDelegate(this.OnEndReverseGeocode);
            }
            if ((this.onReverseGeocodeCompletedDelegate == null)) {
                this.onReverseGeocodeCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnReverseGeocodeCompleted);
            }
            base.InvokeAsync(this.onBeginReverseGeocodeDelegate, new object[] {
                        request}, this.onEndReverseGeocodeDelegate, this.onReverseGeocodeCompletedDelegate, userState);
        }
        
        private System.IAsyncResult OnBeginOpen(object[] inValues, System.AsyncCallback callback, object asyncState) {
            return ((System.ServiceModel.ICommunicationObject)(this)).BeginOpen(callback, asyncState);
        }
        
        private object[] OnEndOpen(System.IAsyncResult result) {
            ((System.ServiceModel.ICommunicationObject)(this)).EndOpen(result);
            return null;
        }
        
        private void OnOpenCompleted(object state) {
            if ((this.OpenCompleted != null)) {
                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
                this.OpenCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));
            }
        }
        
        public void OpenAsync() {
            this.OpenAsync(null);
        }
        
        public void OpenAsync(object userState) {
            if ((this.onBeginOpenDelegate == null)) {
                this.onBeginOpenDelegate = new BeginOperationDelegate(this.OnBeginOpen);
            }
            if ((this.onEndOpenDelegate == null)) {
                this.onEndOpenDelegate = new EndOperationDelegate(this.OnEndOpen);
            }
            if ((this.onOpenCompletedDelegate == null)) {
                this.onOpenCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnOpenCompleted);
            }
            base.InvokeAsync(this.onBeginOpenDelegate, null, this.onEndOpenDelegate, this.onOpenCompletedDelegate, userState);
        }
        
        private System.IAsyncResult OnBeginClose(object[] inValues, System.AsyncCallback callback, object asyncState) {
            return ((System.ServiceModel.ICommunicationObject)(this)).BeginClose(callback, asyncState);
        }
        
        private object[] OnEndClose(System.IAsyncResult result) {
            ((System.ServiceModel.ICommunicationObject)(this)).EndClose(result);
            return null;
        }
        
        private void OnCloseCompleted(object state) {
            if ((this.CloseCompleted != null)) {
                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
                this.CloseCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(e.Error, e.Cancelled, e.UserState));
            }
        }
        
        public void CloseAsync() {
            this.CloseAsync(null);
        }
        
        public void CloseAsync(object userState) {
            if ((this.onBeginCloseDelegate == null)) {
                this.onBeginCloseDelegate = new BeginOperationDelegate(this.OnBeginClose);
            }
            if ((this.onEndCloseDelegate == null)) {
                this.onEndCloseDelegate = new EndOperationDelegate(this.OnEndClose);
            }
            if ((this.onCloseCompletedDelegate == null)) {
                this.onCloseCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnCloseCompleted);
            }
            base.InvokeAsync(this.onBeginCloseDelegate, null, this.onEndCloseDelegate, this.onCloseCompletedDelegate, userState);
        }
        
        protected override Route.GeocodeService.IGeocodeService CreateChannel() {
            return new GeocodeServiceClientChannel(this);
        }
        
        private class GeocodeServiceClientChannel : ChannelBase<Route.GeocodeService.IGeocodeService>, Route.GeocodeService.IGeocodeService {
            
            public GeocodeServiceClientChannel(System.ServiceModel.ClientBase<Route.GeocodeService.IGeocodeService> client) : 
                    base(client) {
            }
            
            public System.IAsyncResult BeginGeocode(Route.GeocodeService.GeocodeRequest request, System.AsyncCallback callback, object asyncState) {
                object[] _args = new object[1];
                _args[0] = request;
                System.IAsyncResult _result = base.BeginInvoke("Geocode", _args, callback, asyncState);
                return _result;
            }
            
            public Route.GeocodeService.GeocodeResponse EndGeocode(System.IAsyncResult result) {
                object[] _args = new object[0];
                Route.GeocodeService.GeocodeResponse _result = ((Route.GeocodeService.GeocodeResponse)(base.EndInvoke("Geocode", _args, result)));
                return _result;
            }
            
            public System.IAsyncResult BeginReverseGeocode(Route.GeocodeService.ReverseGeocodeRequest request, System.AsyncCallback callback, object asyncState) {
                object[] _args = new object[1];
                _args[0] = request;
                System.IAsyncResult _result = base.BeginInvoke("ReverseGeocode", _args, callback, asyncState);
                return _result;
            }
            
            public Route.GeocodeService.GeocodeResponse EndReverseGeocode(System.IAsyncResult result) {
                object[] _args = new object[0];
                Route.GeocodeService.GeocodeResponse _result = ((Route.GeocodeService.GeocodeResponse)(base.EndInvoke("ReverseGeocode", _args, result)));
                return _result;
            }
        }
    }
}
