anchor.diff:  
       member p.Range = 
         match p with 
  -      | SynPat.Const (range=r) 
  -      | SynPat.Wild r
  -      | SynPat.Named (range=r)
  -      | SynPat.Or (range=r)
  -      | SynPat.Ands (range=r)
  -      | SynPat.LongIdent (range=r)
  -      | SynPat.ArrayOrList (range=r) 
  -      | SynPat.Tuple (range=r)
  -      | SynPat.Typed (range=r)
  -      | SynPat.Attrib (range=r)
  -      | SynPat.Record (range=r)
  -      | SynPat.DeprecatedCharRange (range=r)
  -      | SynPat.Null r 
  -      | SynPat.IsInst (range=r)
  -      | SynPat.QuoteExpr (range=r)
  -      | SynPat.InstanceMember (range=r)
  -      | SynPat.OptionalVal (range=r)
  -      | SynPat.Paren (range=r)
  -      | SynPat.FromParseError (range=r) -> r
  +      | SynPat.Const (range=m) 
  +      | SynPat.Wild (range=m)
  +      | SynPat.Named (range=m)
  +      | SynPat.Or (range=m)
  +      | SynPat.Ands (range=m)
  +      | SynPat.LongIdent (range=m)
  +      | SynPat.ArrayOrList (range=m) 
  +      | SynPat.Tuple (range=m)
  +      | SynPat.Typed (range=m)
  +      | SynPat.Attrib (range=m)
  +      | SynPat.Record (range=m)
  +      | SynPat.DeprecatedCharRange (range=m)
  +      | SynPat.Null (range=m) 
  +      | SynPat.IsInst (range=m)
  +      | SynPat.QuoteExpr (range=m)
  +      | SynPat.InstanceMember (range=m)
  +      | SynPat.OptionalVal (range=m)
  +      | SynPat.Paren (range=m)
  +      | SynPat.FromParseError (range=m) -> m
   
   and  
       [<NoEquality; NoComparison>]
  
positive.code:     member e.RangeOfFirstPortion = 
          match e with 
          // haven't bothered making these cases better than just .Range
          | 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.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.TypeApp (range=r)
          | SynExpr.LetOrUse (range=r)
          | SynExpr.TryWith (range=r)
          | SynExpr.TryFinally (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  (_,r) -> r
          // these are better than just .Range, and also commonly applicable inside queries
          | SynExpr.Paren(_,m,_,_) -> m
          | SynExpr.Sequential (_,_,e1,_,_)
  
negative.code:     | AutoProperty of attributes:SynAttributes * isStatic:bool * id:Ident * tyOpt:SynType option * propKind:MemberKind * memberFlags:(MemberKind -> MemberFlags) * xmlDoc:PreXmlDoc * accessibility:SynAccess option * expr:SynExpr * getSetPos:range option * range:range
      member d.Range = 
          match d with 
          | SynMemberDefn.Member (range=m)
          | SynMemberDefn.Interface (range=m)
          | SynMemberDefn.Open (range=m)
          | SynMemberDefn.LetBindings (range=m)
          | SynMemberDefn.ImplicitCtor (range=m)
          | SynMemberDefn.ImplicitInherit (range=m)
          | SynMemberDefn.AbstractSlot (range=m)
          | SynMemberDefn.Inherit (range=m)
          | SynMemberDefn.ValField (range=m)
          | SynMemberDefn.AutoProperty (range=m)
          | SynMemberDefn.NestedType (range=m) -> m
        
  and SynMemberDefns = SynMemberDefn list
  
  