anchor.diff:                      yield! visitExpr e
                   else  // exclude the opening { and closing } on the cexpr from collapsing
                       yield! rcheck Scope.CompExpr Collapse.Same <| rangeMod r 1 1
  -                yield! visitExpr e
  -            | SynExpr.YieldOrReturn (_,e,r) ->
  -                yield! rcheck Scope.CompExprInternal Collapse.Below r 
  -                yield! visitExpr e
  -            | SynExpr.YieldOrReturnFrom (_,e,r) ->
  -                yield! rcheck Scope.CompExprInternal Collapse.Below  r 
  -                yield! visitExpr e
  -            | SynExpr.LetOrUseBang (_,_,_,_,_,e,r) ->
  -                yield! rcheck Scope.CompExprInternal Collapse.Below r 
  -                yield! visitExpr e
  -            | SynExpr.DoBang (e,r) ->
  -                yield! rcheck Scope.CompExprInternal Collapse.Below r
                   yield! visitExpr e
               | SynExpr.ObjExpr (_,_,bindings,_,newRange,wholeRange) ->
                   let r = mkFileIndexRange newRange.FileIndex newRange.End (Range.mkPos wholeRange.EndLine (wholeRange.EndColumn - 1))
  
positive.code:         | SynExpr.LetOrUse (_, _, bindings, body, _) -> 
              visitBindindgs bindings
              visitExpr body
          | SynExpr.LetOrUseBang (_, _, _, _, rhsExpr, body, _) -> 
              visitExpr rhsExpr
              visitExpr body
          | SynExpr.App (_,_, funcExpr, argExpr, _) -> 
              visitExpr argExpr
              visitExpr funcExpr
          | SynExpr.Lambda (_, _, _, expr, _) -> visitExpr expr
          | SynExpr.Record (_, _, fields, _) ->
              fields |> List.choose (fun (_, expr, _) -> expr) |> List.iter visitExpr
          | SynExpr.ArrayOrListOfSeqExpr (_, expr, _) -> visitExpr expr
          | SynExpr.CompExpr (_, _, expr, _) -> visitExpr expr
          | SynExpr.ForEach (_, _, _, _, _, body, _) -> visitExpr body
          | SynExpr.YieldOrReturn (_, expr, _) -> visitExpr expr
          | SynExpr.YieldOrReturnFrom (_, expr, _) -> visitExpr expr
          | SynExpr.Do (expr, _) -> visitExpr expr
          | SynExpr.DoBang (expr, _) -> visitExpr expr
          | SynExpr.Downcast (expr, _, _) -> visitExpr expr
          | SynExpr.For (_, _, _, _, _, expr, _) -> visitExpr expr
          | SynExpr.Lazy (expr, _) -> visitExpr expr
          | SynExpr.Match (_, expr, clauses, _, _) -> 
              visitExpr expr
              visitMatches clauses 
          | SynExpr.MatchLambda (_, _, clauses, _, _) -> visitMatches clauses
          | SynExpr.ObjExpr (_, _, bindings, _, _ , _) -> visitBindindgs bindings
          | SynExpr.Typed (expr, _, _) -> visitExpr expr
          | SynExpr.Paren (expr, _, _, _) -> visitExpr expr
          | Sequentials es ->
              List.iter visitExpr es
          | SynExpr.LongIdentSet (_, expr, _) -> visitExpr expr
          | SynExpr.Tuple (exprs, _, _) -> List.iter visitExpr exprs
          | SynExpr.Const (SynConst.String (_, r), _) -> result.Add r
          | SynExpr.ArrayOrList(_, exprs, _) -> List.iter visitExpr exprs
          | SynExpr.New(_, _, expr, _) -> visitExpr expr
          | SynExpr.While(_, e1, e2, _) -> visitExpr e1; visitExpr e2
          | SynExpr.Assert(e, _) -> visitExpr e
          | SynExpr.TryWith(e, _, clauses, _, _, _, _) -> visitExpr e; visitMatches clauses
          | SynExpr.TryFinally(e1, e2, _, _, _) -> visitExpr e1; visitExpr e2
          | SynExpr.NamedIndexedPropertySet(_, e1, e2, _) -> visitExpr e1; visitExpr e2
          | SynExpr.DotNamedIndexedPropertySet(_, _, e1, e2, _) -> visitExpr e1; visitExpr e2
          | SynExpr.TypeTest(e, _, _) -> visitExpr e
          | SynExpr.Upcast(e, _, _) -> visitExpr e
          | SynExpr.InferredUpcast(e, _) -> visitExpr e
          | SynExpr.InferredDowncast(e, _) -> visitExpr e
          | SynExpr.DotGet(e, _, _, _) -> visitExpr e
          | SynExpr.TypeApp(_, _, tys, _, _, _, _) -> List.iter visitType tys
          | _ -> ()
           
  
negative.code:                     yield! visitExpr e
                  yield! recordFields |> (Seq.choose(fun(_,e,_)->e)>>Seq.collect visitExpr)
                  // exclude the opening `{` and closing `}` of the record from collapsing
                  yield! rcheck Scope.Record Collapse.Same <| rangeMod r 1 1         
              | _ -> ()
          }
  
  