anchor.diff:          varEnv        : Map<Var,Expression>
           letrec        : option<Var>
       }
  -    let asExpr x = (x :> Expression)
  +    let asExpr x = (x :> Expression), None
  +    let asExpression x = (x :> Expression)
   
       let bindingFlags = BindingFlags.Public ||| BindingFlags.NonPublic
       let instanceBindingFlags = BindingFlags.Instance ||| BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.DeclaredOnly
  
positive.code:     | TraverseExpr optimize result -> result
      | _ -> failwith "Invalid logic"
  
      let Conv (e: #Expr,eraseEquality) =
          let e = optimize e
  
          let linqExpr = ConvExpr { eraseEquality = eraseEquality; varEnv = Map.empty; letrec = None } (e :> Expr)
  
          Expression.Lambda(linqExpr, Expression.Parameter(typeof<unit>)) |> asExpr
  
      let CompileImpl (e: #Expr, eraseEquality) = 
  //       let ty = e.Type
  
negative.code:                 let stateEnvironment =
                      match capturedVars with
                      | [] -> []
                      | v1 :: [] -> [v1, stateParameter |> asExpression]
                      | _ ->
                          capturedVars
                          |> List.mapi (fun idx var -> var, Expression.Property (stateParameter, "Item" + (idx+1).ToString()) |> asExpression)
  
                  let varParameters =
                      vars
  