anchor.diff:  open System
   open System.Linq.Expressions
   open Microsoft.FSharp.Linq.RuntimeHelpers
  +open System.Runtime.InteropServices
   
   module Translator = 
       type IQuoter =
  
positive.code:         let call = linq :?> MethodCallExpression
          let lambda = call.Arguments.[0] :?> LambdaExpression
          Expression.Lambda<Func<'T, bool>>(lambda.Body, lambda.Parameters)
          
  type ExpressionToSql = 
      static member Translate<'T>(quoter, conditions:Expression<Func<'T, bool>>, includeWhere) =
          let sql, parms = Translator.comparisonToWhereClause quoter conditions.Body None List.empty
          let where = if includeWhere then "WHERE " else ""
          new Tuple<_,_>(where + sql, parms |> List.rev |> Array.ofList)
  
      static member Translate(quoter:Translator.IQuoter, conditions:Quotations.Expr<(_ -> bool)>, includeWhere) = 
          ExpressionToSql.Translate(quoter, LinqHelpers.conv conditions, includeWhere)
                  
      static member Translate(quoter:Translator.IQuoter,conditions) = 
          ExpressionToSql.Translate(quoter, LinqHelpers.conv conditions, true)
  
      static member Translate(quoter:Translator.IQuoter,conditions:Expression<Func<'T, bool>>) = 
          ExpressionToSql.Translate(quoter, conditions, true)
  
negative.code:         | None, Some r -> r::curParams
          | Some l, Some r -> r::l::curParams
          
      let boolValueToWhereClause quote nameExtractor (body:MemberExpression) curParams isTrue = 
          let _, value, _ = constantOrMemberAccessValue quote nameExtractor body curParams
          value + (sprintf " = @%i" curParams.Length), (isTrue:obj)::curParams
          
      let binExpToSqlOper (body:BinaryExpression) =
  