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