anchor.diff:          f8hole := f8
           B.Invoke(f1,f2,f3,f4,f5,f6,f7,f8)
   
  -    type FuncFSharp<'state,'a> (f:Func<'state,'a>, state:'state) =
  +    type FuncFSharp<'state,'a> (f:Func<'state,'a>) =
           inherit FSharpFunc<unit, 'a>()
  -        override __.Invoke _ = f.Invoke state
  -
  -    type FuncFSharp<'state,'a,'b> (f:Func<'state,'a,'b>, state:'state) =
  +        [<Core.DefaultValue false>] val mutable State : 'state
  +        override this.Invoke _ = f.Invoke this.State
  +
  +    type FuncFSharp<'state,'a,'b> (f:Func<'state,'a,'b>) =
           inherit FSharpFunc<'a,'b>()
  -        override __.Invoke a = f.Invoke (state,a)
  -
  -    type FuncFSharp<'state,'a,'b,'c> (f:Func<'state,'a,'b,'c>, state:'state) =
  +        [<Core.DefaultValue false>] val mutable State : 'state
  +        override this.Invoke a = f.Invoke (this.State,a)
  +
  +    type FuncFSharp<'state,'a,'b,'c> (f:Func<'state,'a,'b,'c>) =
           inherit OptimizedClosures.FSharpFunc<'a,'b,'c>()
  -        override __.Invoke (a,b) = f.Invoke (state,a,b)
  -        override this.Invoke a = fun b -> this.Invoke (a,b)
  -
  -    type FuncFSharp<'state,'a,'b,'c,'d> (f:Func<'state,'a,'b,'c,'d>, state:'state) =
  +        [<Core.DefaultValue false>] val mutable State : 'state
  +        override this.Invoke (a,b) = f.Invoke (this.State,a,b)
  +        override this.Invoke a = fun b -> f.Invoke (this.State,a,b)
  +
  +    type FuncFSharp<'state,'a,'b,'c,'d> (f:Func<'state,'a,'b,'c,'d>) =
           inherit OptimizedClosures.FSharpFunc<'a,'b,'c,'d>()
  -        override __.Invoke (a,b,c) = f.Invoke (state,a,b,c)
  -        override this.Invoke a = fun b c -> this.Invoke (a,b,c)
  -
  -    type FuncFSharp<'state,'a,'b,'c,'d,'e> (f:Func<'state,'a,'b,'c,'d,'e>, state:'state) =
  +        [<Core.DefaultValue false>] val mutable State : 'state
  +        override this.Invoke (a,b,c) = f.Invoke (this.State,a,b,c)
  +        override this.Invoke a = fun b c -> f.Invoke (this.State,a,b,c)
  +
  +    type FuncFSharp<'state,'a,'b,'c,'d,'e> (f:Func<'state,'a,'b,'c,'d,'e>) =
           inherit OptimizedClosures.FSharpFunc<'a,'b,'c,'d,'e>()
  -        override __.Invoke (a,b,c,d) = f.Invoke (state,a,b,c,d)
  -        override this.Invoke a = fun b c d -> this.Invoke (a,b,c,d)
  -
  -    type FuncFSharp<'state,'a,'b,'c,'d,'e,'f> (f:Func<'state,'a,'b,'c,'d,'e,'f>, state:'state) =
  +        [<Core.DefaultValue false>] val mutable State : 'state
  +        override this.Invoke (a,b,c,d) = f.Invoke (this.State,a,b,c,d)
  +        override this.Invoke a = fun b c d -> f.Invoke (this.State,a,b,c,d)
  +
  +    type FuncFSharp<'state,'a,'b,'c,'d,'e,'f> (f:Func<'state,'a,'b,'c,'d,'e,'f>) =
           inherit OptimizedClosures.FSharpFunc<'a,'b,'c,'d,'e,'f>()
  -        override __.Invoke (a,b,c,d,e) = f.Invoke (state,a,b,c,d,e)
  -        override this.Invoke a = fun b c d e -> this.Invoke (a,b,c,d,e)
  +        [<Core.DefaultValue false>] val mutable State : 'state
  +        override this.Invoke (a,b,c,d,e) = f.Invoke (this.State,a,b,c,d,e)
  +        override this.Invoke a = fun b c d e -> f.Invoke (this.State,a,b,c,d,e)
   
       let IsVoidType (ty:System.Type)  = (ty = typeof<System.Void>)
   
  
positive.code:     let genericLessOrEqualIntrinsic = "GenericLessOrEqualIntrinsic" |> hashCompareType.GetMethod
  
  
      type ConvEnv = 
          {   eraseEquality : bool;
              varEnv : Map<Var,Expression>
          }
      let asExpr x = (x :> Expression)
  
      let bindingFlags = BindingFlags.Public ||| BindingFlags.NonPublic
  
negative.code: 
              let minfo = minfo.GetGenericMethodDefinition().MakeGenericMethod methTys
              Expression.Call(minfo,Array.append FPs [| BP |]) |> asExpr
  *)
          | Patterns.AddressOf _ -> raise <| new NotSupportedException("Address-of expressions may not be converted to LINQ expressions")
          | Patterns.AddressSet _ -> raise <| new NotSupportedException("Address-set expressions may not be converted to LINQ expressions")
          | Patterns.FieldSet _ -> raise <| new NotSupportedException("Field-set expressions may not be converted to LINQ expressions")
  