anchor.diff:              | 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.Typed(e,_,_)
  +            | SynExpr.DotIndexedGet(e,_,_,_)
  +            | SynExpr.DotIndexedSet(e,_,_,_,_,_) -> yield! visitExpr e       
               | SynExpr.YieldOrReturn (_,e,r)
               | SynExpr.DoBang (e,r)
               | SynExpr.LetOrUseBang (_,_,_,_,_,e,r)
  
positive.code:         | _ -> ()
  
      and walkMeasure = function
          | SynMeasure.Product(m1, m2, _)
          | SynMeasure.Divide (m1, m2, _) -> walkMeasure m1; walkMeasure m2
          | SynMeasure.Named(longIdent, _) -> addLongIdent longIdent
          | SynMeasure.Seq(ms, _) -> List.iter walkMeasure ms
          | SynMeasure.Power(m, _, _) -> walkMeasure m
          | SynMeasure.Var(ty, _) -> walkTypar ty
          | SynMeasure.One
          | SynMeasure.Anon _ -> ()
  
  
negative.code:         | SynExpr.Downcast (expr, _, _)
          | SynExpr.For (_, _, _, _, _, expr, _)
          | SynExpr.Lazy (expr, _)
          | SynExpr.Assert (expr, _) 
          | SynExpr.TypeApp (expr, _, _, _, _, _, _) 
          | SynExpr.DotSet (_, _, expr, _) 
          | SynExpr.DotIndexedSet (_, _, expr, _, _, _) 
          | SynExpr.NamedIndexedPropertySet (_, _, expr, _) 
          | SynExpr.DotNamedIndexedPropertySet (_, _, _, expr, _) 
          | SynExpr.TypeTest (expr, _, _) 
          | SynExpr.Upcast (expr, _, _) 
          | SynExpr.InferredUpcast (expr, _) 
          | SynExpr.InferredDowncast (expr, _) 
          | SynExpr.Lambda (_, _, _, expr, _)
          | SynExpr.AddressOf (_, expr, _, _) -> 
              visitExpr expr
          | SynExpr.App (_,_, expr1(*funcExpr*),expr2(*argExpr*), _)
          | SynExpr.LetOrUseBang (_, _, _, _,expr1(*rhsExpr*),expr2(*body*), _)
          | SynExpr.TryFinally (expr1, expr2, _, _, _)
          | SynExpr.While (_, expr1, expr2, _) -> 
              visitExpr expr1; visitExpr expr2
          | SynExpr.Tuple (exprs, _, _)
          | SynExpr.ArrayOrList (_, exprs, _)
          | Sequentials  exprs ->
              List.iter visitExpr exprs
          | SynExpr.TryWith (expr, _, clauses, _, _, _, _)
          | SynExpr.Match (_, expr, clauses, _, _) ->
              visitExpr expr; visitMatches clauses 
          | SynExpr.IfThenElse (cond, trueBranch, falseBranchOpt, _, _, _, _) ->
              visitExpr cond; visitExpr trueBranch
              falseBranchOpt |> Option.iter visitExpr 
          | SynExpr.LetOrUse (_, _, bindings, body, _) -> visitBindindgs bindings; visitExpr body
  