anchor.diff:      ] |> Map.ofList
   
   //future feature, support custom ops
  +///Match non-custom binary infix Call patterns.
  +///Must come before Call pattern.
   let (|BinaryInfixCall|_|) = function
       | Call (_, mi, lhs::rhs::[]) ->
           match binaryOps |> Map.tryFind mi.Name with
  
positive.code:             | :? System.NotSupportedException -> true) //for dynamic assemblies, just assume idiomatic generic value
  
  //suprisingly, this is actually used twice.
  ///test whether the Expr is a Var and equals the given Var property-wise
  let varEqualsExpr (x:Var) = function
      | Var y -> x.Name = y.Name && x.Type = y.Type && x.IsMutable = y.IsMutable
      | _ -> false
  
  let (|TupleLet|_|) x =
      ///TupleLet start variation 1) let a = TupleGet(tupleProperty, index) in let b = TupleGet(tupleProperty, index) in ...
      let (|TupleLetStart1|_|) = function
  
negative.code: //todo:
  //  precedence applied to lhs of . not right, see skipped SourceOpTests
  //  note: Dictionary<_,_> values are not sprinted as nicely as in FSI, consider using FSI style
  let sprint expr =
      let rec sprint context expr =
          let applyParens = applyParensForPrecInContext context
  