anchor.diff:          | SynExpr.New(_, t, e, _) -> 
               walkExpr e
               walkType t
  -        | SynExpr.ObjExpr(ty, _, bindings, ifaces, _, _) -> 
  +        | SynExpr.ObjExpr(ty, argOpt, bindings, ifaces, _, _) -> 
  +            argOpt |> Option.iter (fun (e, ident) -> 
  +                walkExpr e
  +                ident |> Option.iter addIdent)
               walkType ty
               List.iter walkBinding bindings
               List.iter walkInterfaceImpl ifaces
           | SynExpr.While(_, e1, e2, _) -> List.iter walkExpr [e1; e2]
  -        | SynExpr.For(_, _, e1, _, e2, e3, _) -> List.iter walkExpr [e1; e2; e3]
  -        | SynExpr.ForEach(_, _, _, _, e1, e2, _) -> List.iter walkExpr [e1; e2]
  +        | SynExpr.For(_, ident, e1, _, e2, e3, _) -> 
  +            addIdent ident
  +            List.iter walkExpr [e1; e2; e3]
  +        | SynExpr.ForEach(_, _, _, pat, e1, e2, _) -> 
  +            walkPat pat
  +            List.iter walkExpr [e1; e2]
           | SynExpr.ArrayOrListOfSeqExpr(_, e, _) -> walkExpr e
           | SynExpr.CompExpr(_, _, e, _) -> walkExpr e
           | SynExpr.Lambda(_, _, _, e, _) -> walkExpr e
  
positive.code:     let idents = ResizeArray<Range.range * Idents>()
      let addLongIdentWithDots (value: LongIdentWithDots) = 
          idents.Add (value.Range, value.Lid |> List.map string |> List.toArray)
  
      let (|ConstructorPats|) = function
          | Pats ps -> ps
  
negative.code:             walkExpr e1
              List.iter walkIndexerArg args
              walkExpr e2
          | SynExpr.NamedIndexedPropertySet(ident, e1, e2, _) -> 
              addLongIdentWithDots ident
              List.iter walkExpr [e1; e2]
          | SynExpr.DotNamedIndexedPropertySet(e1, ident, e2, e3, _) -> 
              addLongIdentWithDots ident
              List.iter walkExpr [e1; e2; e3]
          | SynExpr.TypeTest(e, t, _) -> 
              walkExpr e
              walkType t
  