anchor.diff:              outputReducedExprsMsg outputNonFsiTestFailedMsg
   #endif
   
  +    let reduceFullyAndGetLast expr =
  +        let reducedExprs = expr |> reduceFully
  +        let lastExpr = reducedExprs |> List.rev |> List.head
  +        reducedExprs, lastExpr
  +
   open Internal
   
   //making inline (together with catch/raise) ensures stacktraces clean in test framework output
  
positive.code: 
  ///Test wether the given expr fails with the given expected exception (or a subclass thereof).
  let inline raises<'a when 'a :> exn> (expr:Expr) = 
      let reducedExprs = expr |> reduceFully
      let lastExpr = reducedExprs |> List.rev |> List.head
      match lastExpr with
      | Patterns.Value(lastValue,lastValueTy) when lastValue <> null && typeof<exn>.IsAssignableFrom(lastValueTy) -> //it's an exception
          if typeof<'a>.IsAssignableFrom(lastValueTy) then () //it's the correct exception
  
negative.code: ///2) framework fail methods if Xunit or Nunit present
  ///3) System.Exception if release mode.
  let inline test (expr:Expr<bool>) =
      let reducedExprs, lastExpr = reduceFullyAndGetLast expr
      match lastExpr with
      | DerivedPatterns.Bool(true) -> ()
      | _ ->  
  