anchor.diff:      let rec private visitExpr expression = 
           seq {
               match expression with
  +            | SynExpr.Upcast (e,_,_) 
  +            | SynExpr.Downcast (e,_,_)  
  +            | SynExpr.AddressOf(_,e,_,_) 
  +            | SynExpr.InferredDowncast(e,_) 
  +            | SynExpr.InferredUpcast(e,_)
  +            | SynExpr.DotGet(e,_,_,_)
  +            | SynExpr.DotSet(e,_,_,_)
  +            | SynExpr.DotIndexedGet(e,_,_,_)
  +            | SynExpr.DotIndexedSet(e,_,_,_,_,_) 
  +            | SynExpr.Do (e,_)
  +            | SynExpr.New (_,_,e,_)
  +            | SynExpr.Typed(e,_,_) -> yield! visitExpr e       
  +            | SynExpr.YieldOrReturn (_,e,r)
  +            | SynExpr.DoBang (e,r)
  +            | SynExpr.LetOrUseBang (_,_,_,_,_,e,r)
  +            | SynExpr.YieldOrReturnFrom (_,e,r) ->
  +                yield! rcheck Scope.CompExprInternal Collapse.Below  r 
  +                yield! visitExpr e
  +            | SynExpr.For (_,_,_,_,_,e,r)
  +            | SynExpr.ForEach (_,_,_,_,_,e,r) ->
  +                yield! rcheck Scope.For Collapse.Below  r
  +                yield! visitExpr e
               | SynExpr.LetOrUse (_,_,bindings, body,_) ->
                   yield! visitBindings bindings
                   yield! visitExpr body
  -            | SynExpr.Do (e,_) ->
  -                yield! visitExpr e
  -            | SynExpr.New (_,_,e,_) ->
  -                yield! visitExpr e           
               | SynExpr.Match (seqPointAtBinding,_,clauses,_,r) ->
                   match seqPointAtBinding with
                   | SequencePointAtBinding pr ->
  
positive.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
              | SynExpr.Upcast (e,_,_) 
              | SynExpr.Downcast (e,_,_)  
              | SynExpr.AddressOf(_,e,_,_) 
              | SynExpr.InferredDowncast(e,_) 
              | SynExpr.InferredUpcast(e,_)
              | SynExpr.DotGet(e,_,_,_)
              | SynExpr.DotSet(e,_,_,_) 
              | SynExpr.DotIndexedGet(e,_,_,_) 
              | SynExpr.DotIndexedSet(e,_,_,_,_,_) 
              | SynExpr.Typed(e,_,_) ->
                  yield! visitExpr e                
              | _ -> ()
          }
  
  
negative.code:         | SynExpr.DotNamedIndexedPropertySet(e1, ident, e2, e3, _) -> 
              addLongIdentWithDots ident
              List.iter walkExpr [e1; e2; e3]
          | SynExpr.JoinIn(e1, _, e2, _) -> List.iter walkExpr [e1; e2]
          | SynExpr.LetOrUseBang(_, _, _, pat, e1, e2, _) -> 
              walkPat pat
              List.iter walkExpr [e1; e2]
          | SynExpr.TraitCall (ts, sign, e, _) ->
              List.iter walkTypar ts 
              walkMemberSig sign
  