anchor.diff:          | Some parentJunction when parentJunction = junctionSql -> sql
           | _ -> sprintf "(%s)" sql
   
  -    let rec comparisonToWhereClause (quote:IQuoter) (body:Expression) parentJunction curSqlParams = 
  +    let rec comparisonToWhereClause (quote:IQuoter) nameExtractor (body:Expression) parentJunction curSqlParams = 
           match body with
           | :? UnaryExpression as body when body.NodeType = ExpressionType.Not && body.Type = typeof<System.Boolean> ->
               match body.Operand with
  -            | :? MemberExpression as body -> boolValueToWhereClause quote body curSqlParams false
  +            | :? MemberExpression as body -> boolValueToWhereClause quote nameExtractor body curSqlParams false
               | _ -> failwithf "not condition has unexpected type %A" body
           | :? MemberExpression as body when body.NodeType = ExpressionType.MemberAccess && body.Type = typeof<System.Boolean> ->
  -            boolValueToWhereClause quote body curSqlParams true
  +            boolValueToWhereClause quote nameExtractor body curSqlParams true
           | :? BinaryExpression as body -> 
               match junctionToSqlOper body with
               | Some junctionSql ->
  
positive.code: open System
  open System.Linq.Expressions
  open Microsoft.FSharp.Linq.RuntimeHelpers
  
  module Translator = 
      type IQuoter =
  
negative.code: 
              | None -> 
                  match binExpToSqlOper body with
                  | Some sqlOper -> leafExpression quote nameExtractor body sqlOper curSqlParams
                  | None -> failwithf "unsupported operator %A in leaf" body.NodeType
          | _ -> failwithf "conditions has unexpected type %A" body
  
  