anchor.diff:      /// F# syntax: yield expr 
       /// F# syntax: return expr 
       /// Computation expressions only
  -    | YieldOrReturn   of (bool * bool) * SynExpr * range
  +    | YieldOrReturn   of (bool * bool) * expr:SynExpr * range:range
   
       /// F# syntax: yield! expr 
       /// F# syntax: return! expr 
       /// Computation expressions only
  -    | YieldOrReturnFrom  of (bool * bool) * SynExpr * range
  +    | YieldOrReturnFrom  of (bool * bool) * expr:SynExpr * range:range
   
       /// SynExpr.LetOrUseBang(spBind, isUse, isFromSource, pat, rhsExpr, bodyExpr, mWholeExpr).
       ///
       /// F# syntax: let! pat = expr in expr
       /// F# syntax: use! pat = expr in expr
       /// Computation expressions only
  -    | LetOrUseBang    of SequencePointInfoForBinding * bool * bool * SynPat * SynExpr * SynExpr * range
  +    | LetOrUseBang    of spBind:SequencePointInfoForBinding * isUse:bool * isFromSource:bool * pattern:SynPat * rhsExpr:SynExpr * bodyExpr:SynExpr * range:range
   
       /// F# syntax: do! expr 
       /// Computation expressions only
  -    | DoBang      of SynExpr * range
  +    | DoBang      of expr:SynExpr * range:range
   
       /// Only used in FSharp.Core
  -    | LibraryOnlyILAssembly of ILInstr array *  SynType list * SynExpr list * SynType list * range (* Embedded IL assembly code *)
  +    | LibraryOnlyILAssembly of ILInstr array *  SynType list * SynExpr list * SynType list * range:range (* Embedded IL assembly code *)
   
       /// Only used in FSharp.Core
  -    | LibraryOnlyStaticOptimization of SynStaticOptimizationConstraint list * SynExpr * SynExpr * range
  +    | LibraryOnlyStaticOptimization of SynStaticOptimizationConstraint list * SynExpr * SynExpr * range:range
   
       /// Only used in FSharp.Core
  -    | LibraryOnlyUnionCaseFieldGet of SynExpr * LongIdent * int * range
  +    | LibraryOnlyUnionCaseFieldGet of SynExpr * longId:LongIdent * int * range:range
   
       /// Only used in FSharp.Core
  -    | LibraryOnlyUnionCaseFieldSet of SynExpr * LongIdent * int * SynExpr * range
  +    | LibraryOnlyUnionCaseFieldSet of SynExpr * longId:LongIdent * int * SynExpr * range:range
     
       /// Inserted for error recovery
  -    | ArbitraryAfterError  of (*debugStr:*) string * range  
  +    | ArbitraryAfterError  of debugStr:string * range:range  
   
       /// Inserted for error recovery
  -    | FromParseError  of SynExpr * range  
  +    | FromParseError  of expr:SynExpr * range:range  
   
       /// Inserted for error recovery when there is "expr." and missing tokens or error recovery after the dot
  -    | DiscardAfterMissingQualificationAfterDot  of SynExpr * range  
  +    | DiscardAfterMissingQualificationAfterDot  of expr:SynExpr * range:range  
       /// Get the syntactic range of source code covered by this construct.
       member e.Range = 
           match e with 
  -        | SynExpr.Paren(_,_,_,m) 
  -        | SynExpr.Quote(_,_,_,_,m) 
  -        | SynExpr.Const(_,m) 
  -        | SynExpr.Typed (_,_,m)
  -        | SynExpr.Tuple (_,_,m)
  -        | SynExpr.ArrayOrList (_,_,m)
  -        | SynExpr.Record (_,_,_,m)
  -        | SynExpr.New (_,_,_,m)
  -        | SynExpr.ObjExpr (_,_,_,_,_,m)
  -        | SynExpr.While (_,_,_,m)
  -        | SynExpr.For (_,_,_,_,_,_,m)
  -        | SynExpr.ForEach (_,_,_,_,_,_,m)
  -        | SynExpr.CompExpr (_,_,_,m)
  -        | SynExpr.ArrayOrListOfSeqExpr (_,_,m)
  -        | SynExpr.Lambda (_,_,_,_,m)
  -        | SynExpr.Match (_,_,_,_,m)
  -        | SynExpr.MatchLambda (_,_,_,_,m)
  -        | SynExpr.Do (_,m)
  -        | SynExpr.Assert (_,m)
  -        | SynExpr.App (_,_,_,_,m)
  -        | SynExpr.TypeApp (_,_,_,_,_,_,m)
  -        | SynExpr.LetOrUse (_,_,_,_,m)
  -        | SynExpr.TryWith (_,_,_,_,m,_,_)
  -        | SynExpr.TryFinally (_,_,m,_,_)
  -        | SynExpr.Sequential (_,_,_,_,m)
  -        | SynExpr.ArbitraryAfterError(_,m)
  -        | SynExpr.FromParseError (_,m) 
  -        | SynExpr.DiscardAfterMissingQualificationAfterDot (_,m) 
  -        | SynExpr.IfThenElse (_,_,_,_,_,_,m)
  -        | SynExpr.LongIdent (_,_,_,m)
  -        | SynExpr.LongIdentSet (_,_,m)
  -        | SynExpr.NamedIndexedPropertySet (_,_,_,m)
  -        | SynExpr.DotIndexedGet (_,_,_,m)
  -        | SynExpr.DotIndexedSet (_,_,_,_,_,m)
  -        | SynExpr.DotGet (_,_,_,m)
  -        | SynExpr.DotSet (_,_,_,m)
  -        | SynExpr.DotNamedIndexedPropertySet (_,_,_,_,m)
  -        | SynExpr.LibraryOnlyUnionCaseFieldGet (_,_,_,m)
  -        | SynExpr.LibraryOnlyUnionCaseFieldSet (_,_,_,_,m)
  -        | SynExpr.LibraryOnlyILAssembly (_,_,_,_,m)
  -        | SynExpr.LibraryOnlyStaticOptimization (_,_,_,m)
  -        | SynExpr.TypeTest (_,_,m)
  -        | SynExpr.Upcast (_,_,m)
  -        | SynExpr.AddressOf (_,_,_,m)
  -        | SynExpr.Downcast (_,_,m)
  -        | SynExpr.JoinIn (_,_,_,m)
  -        | SynExpr.InferredUpcast (_,m)
  -        | SynExpr.InferredDowncast (_,m)
  -        | SynExpr.Null m
  -        | SynExpr.Lazy (_, m)
  -        | SynExpr.TraitCall(_,_,_,m)
  -        | SynExpr.ImplicitZero (m)
  -        | SynExpr.YieldOrReturn (_,_,m)
  -        | SynExpr.YieldOrReturnFrom (_,_,m)
  -        | SynExpr.LetOrUseBang  (_,_,_,_,_,_,m)
  -        | SynExpr.DoBang  (_,m) -> m
  +        | SynExpr.Paren (range=r)
  +        | SynExpr.Quote (range=r)
  +        | SynExpr.Const (range=r)
  +        | SynExpr.Typed (range=r)
  +        | SynExpr.Tuple (range=r)
  +        | SynExpr.ArrayOrList (range=r)
  +        | SynExpr.Record (range=r)
  +        | SynExpr.New (range=r)
  +        | SynExpr.ObjExpr (range=r)
  +        | SynExpr.While (range=r)
  +        | SynExpr.For (range=r)
  +        | SynExpr.ForEach (range=r)
  +        | SynExpr.CompExpr (range=r)
  +        | SynExpr.ArrayOrListOfSeqExpr (range=r)
  +        | SynExpr.Lambda (range=r)
  +        | SynExpr.Match (range=r)
  +        | SynExpr.MatchLambda (range=r)
  +        | SynExpr.Do (range=r)
  +        | SynExpr.Assert (range=r)
  +        | SynExpr.App (range=r)
  +        | SynExpr.TypeApp (range=r)
  +        | SynExpr.LetOrUse (range=r)
  +        | SynExpr.TryWith (range=r)
  +        | SynExpr.TryFinally (range=r)
  +        | SynExpr.Sequential (range=r)
  +        | SynExpr.ArbitraryAfterError (range=r)
  +        | SynExpr.FromParseError (range=r)
  +        | SynExpr.DiscardAfterMissingQualificationAfterDot (range=r)
  +        | SynExpr.IfThenElse (range=r)
  +        | SynExpr.LongIdent (range=r)
  +        | SynExpr.LongIdentSet (range=r)
  +        | SynExpr.NamedIndexedPropertySet (range=r)
  +        | SynExpr.DotIndexedGet (range=r)
  +        | SynExpr.DotIndexedSet (range=r)
  +        | SynExpr.DotGet (range=r)
  +        | SynExpr.DotSet (range=r)
  +        | SynExpr.DotNamedIndexedPropertySet (range=r)
  +        | SynExpr.LibraryOnlyUnionCaseFieldGet (range=r)
  +        | SynExpr.LibraryOnlyUnionCaseFieldSet (range=r)
  +        | SynExpr.LibraryOnlyILAssembly (range=r)
  +        | SynExpr.LibraryOnlyStaticOptimization (range=r)
  +        | SynExpr.TypeTest (range=r)
  +        | SynExpr.Upcast (range=r)
  +        | SynExpr.AddressOf (range=r)
  +        | SynExpr.Downcast (range=r)
  +        | SynExpr.JoinIn (range=r)
  +        | SynExpr.InferredUpcast (range=r)
  +        | SynExpr.InferredDowncast (range=r)
  +        | SynExpr.Null r
  +        | SynExpr.Lazy (range=r)
  +        | SynExpr.TraitCall (range=r)
  +        | SynExpr.ImplicitZero r
  +        | SynExpr.YieldOrReturn (range=r)
  +        | SynExpr.YieldOrReturnFrom (range=r)
  +        | SynExpr.LetOrUseBang  (range=r)
  +        | SynExpr.DoBang  (range=r) -> r
           | SynExpr.Ident id -> id.idRange
       /// range ignoring any (parse error) extra trailing dots
       member e.RangeSansAnyExtraDot = 
           match e with 
  -        | SynExpr.Paren(_,_,_,m) 
  -        | SynExpr.Quote(_,_,_,_,m) 
  -        | SynExpr.Const(_,m) 
  -        | SynExpr.Typed (_,_,m)
  -        | SynExpr.Tuple (_,_,m)
  -        | SynExpr.ArrayOrList (_,_,m)
  -        | SynExpr.Record (_,_,_,m)
  -        | SynExpr.New (_,_,_,m)
  -        | SynExpr.ObjExpr (_,_,_,_,_,m)
  -        | SynExpr.While (_,_,_,m)
  -        | SynExpr.For (_,_,_,_,_,_,m)
  -        | SynExpr.ForEach (_,_,_,_,_,_,m)
  -        | SynExpr.CompExpr (_,_,_,m)
  -        | SynExpr.ArrayOrListOfSeqExpr (_,_,m)
  -        | SynExpr.Lambda (_,_,_,_,m)
  -        | SynExpr.Match (_,_,_,_,m)
  -        | SynExpr.MatchLambda (_,_,_,_,m)
  -        | SynExpr.Do (_,m)
  -        | SynExpr.Assert (_,m)
  -        | SynExpr.App (_,_,_,_,m)
  -        | SynExpr.TypeApp (_,_,_,_,_,_,m)
  -        | SynExpr.LetOrUse (_,_,_,_,m)
  -        | SynExpr.TryWith (_,_,_,_,m,_,_)
  -        | SynExpr.TryFinally (_,_,m,_,_)
  -        | SynExpr.Sequential (_,_,_,_,m)
  -        | SynExpr.ArbitraryAfterError(_,m)
  -        | SynExpr.FromParseError (_,m) 
  -        | SynExpr.IfThenElse (_,_,_,_,_,_,m)
  -        | SynExpr.LongIdentSet (_,_,m)
  -        | SynExpr.NamedIndexedPropertySet (_,_,_,m)
  -        | SynExpr.DotIndexedGet (_,_,_,m)
  -        | SynExpr.DotIndexedSet (_,_,_,_,_,m)
  -        | SynExpr.DotSet (_,_,_,m)
  -        | SynExpr.DotNamedIndexedPropertySet (_,_,_,_,m)
  -        | SynExpr.LibraryOnlyUnionCaseFieldGet (_,_,_,m)
  -        | SynExpr.LibraryOnlyUnionCaseFieldSet (_,_,_,_,m)
  -        | SynExpr.LibraryOnlyILAssembly (_,_,_,_,m)
  -        | SynExpr.LibraryOnlyStaticOptimization (_,_,_,m)
  -        | SynExpr.TypeTest (_,_,m)
  -        | SynExpr.Upcast (_,_,m)
  -        | SynExpr.AddressOf (_,_,_,m)
  -        | SynExpr.Downcast (_,_,m)
  -        | SynExpr.JoinIn (_,_,_,m)
  -        | SynExpr.InferredUpcast (_,m)
  -        | SynExpr.InferredDowncast (_,m)
  -        | SynExpr.Null m
  -        | SynExpr.Lazy (_, m)
  -        | SynExpr.TraitCall(_,_,_,m)
  -        | SynExpr.ImplicitZero (m)
  -        | SynExpr.YieldOrReturn (_,_,m)
  -        | SynExpr.YieldOrReturnFrom (_,_,m)
  -        | SynExpr.LetOrUseBang  (_,_,_,_,_,_,m)
  -        | SynExpr.DoBang  (_,m) -> m
  +        | SynExpr.Paren (range=r)
  +        | SynExpr.Quote (range=r)
  +        | SynExpr.Const (range=r)
  +        | SynExpr.Typed (range=r)
  +        | SynExpr.Tuple (range=r)
  +        | SynExpr.ArrayOrList (range=r)
  +        | SynExpr.Record (range=r)
  +        | SynExpr.New (range=r)
  +        | SynExpr.ObjExpr (range=r)
  +        | SynExpr.While (range=r)
  +        | SynExpr.For (range=r)
  +        | SynExpr.ForEach (range=r)
  +        | SynExpr.CompExpr (range=r)
  +        | SynExpr.ArrayOrListOfSeqExpr (range=r)
  +        | SynExpr.Lambda (range=r)
  +        | SynExpr.Match (range=r)
  +        | SynExpr.MatchLambda (range=r)
  +        | SynExpr.Do (range=r)
  +        | SynExpr.Assert (range=r)
  +        | SynExpr.App (range=r)
  +        | SynExpr.TypeApp (range=r)
  +        | SynExpr.LetOrUse (range=r)
  +        | SynExpr.TryWith (range=r)
  +        | SynExpr.TryFinally (range=r)
  +        | SynExpr.Sequential (range=r)
  +        | SynExpr.ArbitraryAfterError (range=r)
  +        | SynExpr.FromParseError (range=r) 
  +        | SynExpr.IfThenElse (range=r)
  +        | SynExpr.LongIdentSet (range=r)
  +        | SynExpr.NamedIndexedPropertySet (range=r)
  +        | SynExpr.DotIndexedGet (range=r)
  +        | SynExpr.DotIndexedSet (range=r)
  +        | SynExpr.DotSet (range=r)
  +        | SynExpr.DotNamedIndexedPropertySet (range=r)
  +        | SynExpr.LibraryOnlyUnionCaseFieldGet (range=r)
  +        | SynExpr.LibraryOnlyUnionCaseFieldSet (range=r)
  +        | SynExpr.LibraryOnlyILAssembly (range=r)
  +        | SynExpr.LibraryOnlyStaticOptimization (range=r)
  +        | SynExpr.TypeTest (range=r)
  +        | SynExpr.Upcast (range=r)
  +        | SynExpr.AddressOf (range=r)
  +        | SynExpr.Downcast (range=r)
  +        | SynExpr.JoinIn (range=r)
  +        | SynExpr.InferredUpcast (range=r)
  +        | SynExpr.InferredDowncast (range=r)
  +        | SynExpr.Null r
  +        | SynExpr.Lazy (range=r)
  +        | SynExpr.TraitCall (range=r)
  +        | SynExpr.ImplicitZero r
  +        | SynExpr.YieldOrReturn (range=r)
  +        | SynExpr.YieldOrReturnFrom (range=r)
  +        | SynExpr.LetOrUseBang (range=r)
  +        | SynExpr.DoBang  (range=r) -> r
           | SynExpr.DotGet (expr,_,lidwd,m) -> if lidwd.ThereIsAnExtraDotAtTheEnd then unionRanges expr.Range lidwd.RangeSansAnyExtraDot else m
           | SynExpr.LongIdent (_,lidwd,_,_) -> lidwd.RangeSansAnyExtraDot 
           | SynExpr.DiscardAfterMissingQualificationAfterDot (expr,_) -> expr.Range
  
positive.code:     [<NoEquality; NoComparison>]
      SynUnionCase = 
      /// The untyped, unchecked syntax tree for one case in a union definition.
      | UnionCase of SynAttributes * Ident * SynUnionCaseType * PreXmlDoc * SynAccess option * range
      member this.Range =
          match this with
          | UnionCase(_,_,_,_,_,m) -> m
  
  and 
      [<NoEquality; NoComparison>]
  
negative.code:     [<NoEquality; NoComparison>]
      SynEnumCase =
      /// The untyped, unchecked syntax tree for one case in an enum definition.
      | EnumCase of attributes:SynAttributes * id:Ident * SynConst * xmlDoc:PreXmlDoc * range:range
      member this.Range =
          match this with
          | EnumCase (range=r) -> r
  
  and SynUnionCases = SynUnionCase list
  
  