anchor.diff:              let lambda = Expression.Lambda<Action<'U1, 'U2>>(f p1 p2, p1, p2)
   #if COMPILETOMETHOD
               let meth = DynamicAssembly.CompileExpr lambda
  -            Action<'U1, 'U2>(fun u1 u2 -> meth.Invoke(null, [| box u1; box u2 |]) |> ignore)
  +            Action<'U1, 'U2>(fun u1 u2 -> meth.GuardedInvoke(null, [| box u1; box u2 |]) |> ignore)
   #else
               lambda.Compile()
   #endif
  
positive.code:             let lambda = Expression.Lambda<Action<'U1>>(f p1, p1)
  #if COMPILETOMETHOD
              let meth = DynamicAssembly.CompileExpr lambda
              Action<'U1>(fun u -> meth.Invoke(null, [| box u |]) |> ignore)
  #else
              lambda.Compile()
  #endif
  
negative.code:             let lambda = Expression.Lambda<Func<'U,'V>>(f parameter, parameter)
  #if COMPILETOMETHOD
              let meth = DynamicAssembly.CompileExpr lambda
              Func<'U,'V>(fun u -> meth.GuardedInvoke(null, [| box u |]) :?> 'V)
  #else
              lambda.Compile()
  #endif
  