anchor.diff:      ///////////////////////////////////////////////////////////////////
       // Ajax API
   
  -    let AltitudeReference = Type.New()
  -
  -    let AltitudeReferenceClass =
  +    let AltitudeReference =
           Class "Microsoft.Maps.AltitudeReference"
  -        |=> AltitudeReference
  -        |+> ConstantStrings AltitudeReference ["ground"; "ellipsoid"]
  +        |+> ConstantStrings TSelf ["ground"; "ellipsoid"]
           |+> Static [
  -                "isValid" => AltitudeReference ^-> T<bool>
  +                "isValid" => TSelf ^-> T<bool>
                   |> WithComment "Determines if the specified reference is a supported AltitudeReference."
               ]
   
  -    let AnimationVisibility = Type.New()
  -
  -    let AnimationVisibilityClass =
  +    let AnimationVisibility =
           Class "Microsoft.Maps.AnimationVisibility"
  -        |=> AnimationVisibility
  -        |+> ConstantStrings AnimationVisibility ["auto"; "hide"; "show"]
  -
  -    let Location = Type.New()
  -
  -    let LocationClass =
  +        |+> ConstantStrings TSelf ["auto"; "hide"; "show"]
  +
  +    let Location =
           Class "Microsoft.Maps.Location"
  -        |=> Location
           |+> Static [
                   Constructor (T<float> * T<float> * T<float> * AltitudeReference)
                   Constructor (T<float> * T<float> * T<float>)
                   Constructor (T<float> * T<float>)
   
  -                "areEqual" => Location * Location ^-> T<bool>
  +                "areEqual" => TSelf * TSelf ^-> T<bool>
                   |> WithComment "Determines if the specified Location objects are equal."
   
                   "normalizeLongitude" => T<float -> float>
  
positive.code:                 "width" =? T<float>
                  |> WithComment "The width, in degrees, of the rectangle."
  
                  "clone" => T<unit> ^-> LocationRect
                  |> WithComment "Returns a copy of the LocationRect object."
  
                  "contains" => Location ^-> T<bool>
  
negative.code:                 |> WithInline "($p.x+','+$p.y)"
              ]
  
      let ItineraryInstruction =
          Class "Microsoft.Maps.ItineraryInstruction"
          |+> Instance
              [
                  "maneuverType" =? T<string>
                  "text" =? T<string>
              ]
  
      let ItineraryIcon =
          Class "Microsoft.Maps.ItineraryIcon"
          |+> ConstantStrings TSelf ["None"; "Airline"; "Auto"; "Bus"
                                     "Ferry"; "Train"; "Walk"; "Other"]
  
      let ItineraryDetail =
          Class "Microsoft.Maps.ItineraryDetail"
          |+> Instance
              [
                  "compassDegrees" =? T<string>
                  |> WithComment "The direction in degrees. Note: This value is not supported for the Transit travel mode."
  
                  "maneuverType" =? T<string>
                  |> WithComment "The type of maneuver described by this detail collection. The ManeuverType in A detail collection can provide information for a portion of the maneuver described by the maneuverType attribute of the corresponding Instruction. For example the maneuverType attribute of an Instruction may specify TurnLeftThenTurnRight as the maneuver while the associated detail items may specify specifics about the TurnLeft and TurnRight maneuvers."
  
                  "names" =? T<string>
                  |> WithComment "A street, highway or intersection where the maneuver occurs. If the maneuver is complex, there may be more than one name field in the details collection. The name field may also have no value. This can occur if the name is not known or if a street, highway or intersection does not have a name. Note: This value is only supported for the transit travel mode."
  
                  "startPathIndices" =? Type.ArrayOf T<int>
                  |> WithComment "StartPathIndices and EndPathIndices specify index values for specific route path points that are returned in the response when the routePathOutput parameter is set to Points. Together, these two index values define a range of route path points that correspond to a maneuver. Route path index values are integers where the first route path point has an index value of 0."
  
                  "endPathIndices" =? Type.ArrayOf T<int>
                  |> WithComment "StartPathIndices and EndPathIndices specify index values for specific route path points that are returned in the response when the routePathOutput parameter is set to Points. Together, these two index values define a range of route path points that correspond to a maneuver. Route path index values are integers where the first route path point has an index value of 0."
  
                  "roadType" =? T<string>
                  |> WithComment "The type of road."
              ]
  
      let TransitLine =
          Class "Microsoft.Maps.TransitLine"
          |+> Instance
              [
                  "verboseName" =? T<string>
                  |> WithComment "The full name of the transit line."
  
                  "abbreviatedName" =? T<string>
                  |> WithComment "The abbreviated name of the transit line, such as the bus number."
  
                  "agencyId" =? T<string>
                  |> WithComment "The ID associated with the transit agency."
  
                  "agencyName" =? T<string>
                  |> WithComment "The name of the transit agency."
  
                  "lineColor" =? T<string>
                  |> WithComment "The color associated with the transit line. The color is provided as an RGB value."
  
                  "lineTextColor" =? T<string>
                  |> WithComment "The color to use for text associated with the transit line. The color is provided as an RGB value."
  
                  "uri" =? T<string>
                  |> WithComment "The URI for the transit agency."
  
                  "phoneNumber" =? T<string>
                  |> WithComment "The phone number of the transit agency."
  
                  "providerInfo" =? T<string>
                  |> WithComment "The contact information for the provider of the transit information."
              ]
  
      let ItineraryItem =
          Class "Microsoft.Maps.ItineraryItem"
          |+> Instance
              [
                  "childItineraryItems" =? Type.ArrayOf TSelf
                  |> WithComment "A collection of ItineraryItems that divides an itinerary item into smaller steps. An itinerary item can have only one set of ChildItineraryItems."
  
                  "compassDirection" =? T<string>
                  |> WithComment "The direction of travel associated with a maneuver on a route, such as south or southwest. Note: This value is not supported for the Transit travel mode."
  
                  "details" =? Type.ArrayOf ItineraryDetail
                  |> WithComment "Information about one of the maneuvers that is part of the itinerary item. An ItineraryItem can contain more than one Detail collection. For information about the fields contained in a Detail collection, see the Detail Fields table below."
  
                  "exit" =? T<string>
                  |> WithComment "The name or number of the exit associated with this itinerary step."
  
                  "hints" =? T<string>
                  |> WithComment "Additional information that may be helpful in following a route. In addition to the hint text, this element has an attribute hintType that specifies what the hint refers to, such as “NextIntersection.” Hint is an optional element and a route step can contain more than one hint."
  
                  "iconType" =? ItineraryIcon
                  |> WithComment "The type of icon to display."
  
                  "instruction" =? ItineraryInstruction
                  |> WithComment "A description of a maneuver in a set of directions. In addition to the content of the instruction field, this field has an attribute maneuverType that is set to the type of maneuver, such as 'TurnLeft.'"
  
                  "maneuverPoint" =? PointResource
                  |> WithComment "The coordinates of a point on the Earth where a maneuver is required, such as a left turn. A ManeuverPoint contains Latitude and Longitude elements. Note: This value is not supported for ItineraryItems that are part of a ChildItineraryItems collection."
  
                  "sideOfStreet" =? T<string>
                  |> WithComment "The side of the street where the destination is found based on the arrival direction. This field applies to the last itinerary item only."
  
                  "signs" =? T<string>
                  |> WithComment "Signage text for the route. There may be more than one sign value for an itinerary item."
  
                  "time" =? T<string>
                  |> WithComment "The arrival or departure time for the transit step."
  
                  "tollZone" =? T<string>
                  |> WithComment "The name or number of the toll zone."
  
                  "towardsRoadName" =? T<string>
                  |> WithComment "The name of the street that the route goes towards in the first itinerary item."
  
                  "transitLine" =? Type.ArrayOf TransitLine
                  |> WithComment "Information about the transit line associated with the itinerary item. For more information about the fields contained in the TransitLine collection, see the Transit Line Fields table below."
  
                  "transitStopId" =? T<string>
                  |> WithComment "The ID assigned to the transit stop by the transit agency."
  
                  "transitTerminus" =? T<string>
                  |> WithComment "The end destination for the transit line in the direction you are traveling."
  
                  "travelDistance" =? T<float>
                  |> WithComment "The physical distance covered by this route step. Note: This value is not supported for the Transit travel mode."
  
                  "travelDuration" =? T<float>
                  |> WithComment "The time in seconds that it takes to travel a corresponding TravelDistance."
  
                  "travelMode" =? T<string>
                  |> WithComment "The mode of travel for a specific step in the route. Note: This value is not supported for ItineraryItems that are part of a ChildItineraryItems collection."
  
                  "warnings" =? T<string>
                  |> WithComment "Information about a condition that may affect a specific step in the route. Warning is an optional element and a route step can contain more than one warning."
              ]
  
      let RouteLeg =
          Class "Microsoft.Maps.RouteLeg"
          |+> Instance
              [
                  "travelDistance" =? T<float>
                  |> WithComment "The physical distance covered by a route leg."
  
                  "travelDuration" =? T<float>
                  |> WithComment "The time, in seconds, that it takes to travel a corresponding TravelDistance."
  
                  "actualStart" =? PointResource
                  |> WithComment "The Point (latitude and longitude) that was used as the actual starting location for the route leg. In most cases, the ActualStart is the same as the requested waypoint. However, if a waypoint is not close to a road, the Routes API chooses a location on the nearest road as the starting point of the route. This ActualStart element contains the latitude and longitude of this new location."
  
                  "actualEnd" =? PointResource
                  |> WithComment "The Point (latitude and longitude) that was used as the actual ending location for the route leg. In most cases, the ActualEnd is the same as the requested waypoint. However, if a waypoint is not close to a road, the Routes API chooses a location on the nearest road as the ending point of the route. This ActualEnd element contains the latitude and longitude of this new location."
  
                  "startLocation" =? Type.ArrayOf LocationResource
                  |> WithComment "Information about the location of the starting waypoint for a route. A StartLocation is provided only when the waypoint is specified as a landmark or an address. For more information about the fields contained in a Location collection, see the Location Fields table below."
  
                  "endLocation" =? Type.ArrayOf LocationResource
                  |> WithComment "Information about the location of the ending waypoint for a route. An EndLocation is provided only when the waypoint is specified as a landmark or an address. For more information about the fields contained in a Location collection, see the Locations Fields table below."
  
                  "itineraryItems" =? Type.ArrayOf ItineraryItem
                  |> WithComment "Information that defines a step in the route. For information about the fields that make up the ItineraryItem collection, see the Itinerary Item Fields table below."
              ]
  
      let DistanceUnit =
          Class "Microsoft.Maps.DistanceUnit"
          |+> ConstantStrings TSelf ["Mile"; "Kilometer"]
  
      let LineResource =
          Class "Microsoft.Maps.LineResource"
          |+> Instance
              [
                  "type" =? T<string>
                  "coordinates" =? Type.ArrayOf (Type.ArrayOf T<float>)
              ]
  
      let RoutePath =
          Class "Microsoft.Maps.RoutePath"
          |+> Instance
              [
                  "line" =? LineResource
                  |> WithComment "When the points in the line are connected, they represent the path of the route."
  
                  "point" =? PointResource
                  |> WithComment "The coordinates of a point on the Earth."
              ]
  
      let RouteResource =
          Class "Microsoft.Maps.RouteResource"
          |+> Instance
              [
                  "id" =? T<string>
  